#line 8 "btyaccpa.ske"

//
// @(#)btyaccpar, based on byacc 1.8 (Berkeley)
//
#define YYBTYACC 1

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef int Yshort;

#line 1 "layerd_dpp_parser_beta.y"

/*-
* Copyright (c) 2008 Alexis Ferreyra
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
*    notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
*    notice, this list of conditions and the following disclaimer in the
*    documentation and/or other materials provided with the distribution.
* 3. Neither the name of copyright holders nor the names of its
*    contributors may be used to endorse or promote products derived
*    from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL COPYRIGHT HOLDERS OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/

/****************************************************************************
 layerd_dpp_parser_beta.y

 Parser for Meta D++ Compiler
 
 This file must be processed with BtYacc parser 
 generator. Yacc will not function because it 
 doesn't support ambiguous LR(1) grammars.

 Original Author: Alexis Ferreyra
 Contact: alexis.ferreyra@layerd.net
 
 Please visit http://layerd.net to get the last version
 of the software and information about LayerD technology.

***************************************************************************/

#define DPP

#ifdef __LAYERDDPP_DEBUG_CODEDOM_LIB
#define __LAYERD_CODEDOM_DEBUG_DESTRUCTORS
#define __LAYERD_CODEDOM_DEBUG_OUTPUT(n) std::cout<<n<<endl
#define __LAYERD_CODEDOM_DEBUG_OUTPUT_W(n) std::wcout<<n<<endl
#endif
/*CT(n) : Macro para constantes de texto en la interfaz del compilador, diferente de DT(n) que es la macro para constantes del CodeDOM.*/
#define CT(n) DT(n)
#define SINTAX_ERROR(N)	AddError(N)
#define WARNING_MESSAGE(N) AddWarning(N)
#define ASSING_COMMENT(node) if(lastCommentValid){lastCommentValid=false;node->set_doc(CodeDOM::string((const DOM_CHAR*)lastCommentBuffer) );}
#define LAYERD_COMPILER_VERSION				"Beta 0.98"
#define LAYERD_COMPILER_VERSION_DOM_CHAR	L"Beta 0.98"
#define NEW_ERROR_RESUME_ZOENODELIST		NewErrorResumeXplNodeList()

void AddError(const char*error);
void AddWarning(const char*error);

#include <iostream>
#include <wchar.h>
#ifdef WIN32
#include "..\\CodeDOM\\CDOM_IncludeAll.h"
#else
#include <layerd/CDOM_IncludeAll.h>
#endif

#include "layerd_dpp_parser_beta_tab.h"

using namespace std;

/*#define	SM_AUTO				0x00000001 /* Obsoleto * /*/
#define SM_STATIC			0x00000002
#define SM_CONST			0x00000004
#define SM_VOLATILE			0x00000008
#define SM_EXTERN			0x00000010
#define SM_EXTENSION		0x00000020
#define SM_FORCE    		0x00000040
#define SM_FACTORY			0x00000080
#define SM_INTERACTIVE		0x00000100
#define SM_KEYWORD			0x00000200
#define SM_PARAMS   		0x00000400
#define SM_FINAL			0x00000800
#define SM_NEW				0x00001000
#define SM_OVERRIDE			0x00002000
#define SM_VIRTUAL			0x00004000
#define SM_EXEC				0x00008000
#define SM_ABSTRACT			0x00010000
#define SM_FPOINTER			0x00020000
#define SM_IN				0x00040000
#define SM_OUT	 			0x00080000
#define SM_INOUT 			0x00100000
#define SM_REF	 			0x00200000
#define SM_NONVIRTUAL		0x00400000

#define SM_PUBLIC			0x00800000
#define SM_PROTECTED		0x01000000
#define SM_PRIVATE			0x02000000
#define SM_IPUBLIC			0x04000000
#define SM_IPROTECTED		0x08000000
#define SM_IPRIVATE			0x10000000

#define SM_INAME			0x20000000
#define	SM_EXPRESSION		0x40000000

CodeDOM::XplNode *rootNode=NULL, *tempNode=NULL;
CodeDOM::XplWriter *writer=NULL;
/*CodeDOM::XplNodeList *tempList=NULL;*/

struct DppOptions{
	char filename[2048];
	char outputFilename[2048];
	char configFilename[2048];
	char layerdCompiler[2048];
	char platform[2048];
	bool printWarnings;
	bool printErrors;
	bool interactive;
	bool debug;
	bool showDebug;
	bool includeComments;
	bool includeSourceData;
	bool silent;
	bool fullCompile;
	bool addExtension;
	bool library;
	DppOptions(){
		filename[0]='\0';
		outputFilename[0]='\0';
		configFilename[0]='\0';
		layerdCompiler[0]='\0';
		platform[0]='\0';
		printWarnings=true;
		printErrors=true;
		interactive=false;
		debug=false;
		includeComments=true;
		includeSourceData=true;
		silent=false;
		fullCompile=false;
		addExtension=false;
		library=false;
	}
};

DppOptions command;

/* Para el almacenamiento de errores y warnings */
vector<std::string> pErrors;
vector<std::string> pWarnings;

void SetClassMembers(CodeDOM::XplNodeList *c, CodeDOM::XplNodeList *list);
void SetDeclaratorMod(CodeDOM::XplClass* c,unsigned int num);
void SetParameterModifiers(CodeDOM::XplParameter*p, unsigned int num);
void SetLocalVarsModifiers(CodeDOM::XplDeclarator*p, unsigned int num);
void SetNewTypeModifiers(CodeDOM::XplNewExpression*t, unsigned int num);
void SetFuncStorageMod(CodeDOM::XplFunction*f,unsigned int num);
void SetFieldStorage(CodeDOM::XplField*f,unsigned int num);
void SetPropertyStorage(CodeDOM::XplProperty*f,unsigned int num);
void SetDeclaratorStorage(CodeDOM::XplDeclarator*f,unsigned int num);
void SetEnumConstantTypes(CodeDOM::XplClass*clase,unsigned int tipo);
CodeDOM::string get_OperatorFunctionName(unsigned int num);
wchar_t* get_nativeType(unsigned int num);
CodeDOM::XplClass* CreateClass(CodeDOM::string nombre, CodeDOM::XplNodeList* classMembers, CodeDOM::XplNode* inherits, CodeDOM::XplNode* implements, unsigned int tipo, unsigned int modifiers);
CodeDOM::XplForStatement* CreateFor(CodeDOM::XplNode* p_forinit,CodeDOM::XplNode* p_condition,CodeDOM::XplNode* p_update,CodeDOM::XplNode* p_statement);
CodeDOM::XplFunction* CreateFunction(unsigned int p_storage /*Storage*/,
                        CodeDOM::XplType* p_type_declarator /*Type_Decl*/,                        
                        CodeDOM::XplFunction* p_declarator_f /*Decl_F*/,
                        CodeDOM::XplParameters* p_parameters /*Parameters*/,                        
                        CodeDOM::XplBaseInitializers * p_base_initializers /*Base_Init*/,
                        CodeDOM::XplFunctionBody* p_block /*Block*/);

/* Defines necesarios para BtYacc */
#define YYDELETEPOSN(v1,v2)
#define YYDELETEVAL(v1,v2)

/* Definiciones para el trace de los numeros de linea */
#define YYPOSN int
#define GET_PARSER_POS   (yyps->psp)
#define SET_SOURCE_DATA(node,token_min,token_max) if(command.includeSourceData)node->set_ldsrc( CodeDOM::CODEDOM_Att_ToString(GET_PARSER_POS[token_min]) + DT(",") + CodeDOM::CODEDOM_Att_ToString(GET_PARSER_POS[token_max]) )
#define SET_SOURCE_DATA_S(node,token_min) if(command.includeSourceData)node->set_ldsrc( CodeDOM::CODEDOM_Att_ToString(GET_PARSER_POS[token_min]) )
#define RET_POS yyps->pos

/* Funcion de reporte de errores para yacc */
void yyerror(char* str){
  /*No hago nada porque se supone que capturo los errores en las reglas de produccion.*/
  /*cout<<str<<endl;*/
}

/* Funciones externas definidas por lex */
int yylex();
extern int yylineno;

/* Controlador de archivo de flex */
extern FILE* yyin;

#define COMMENT_BUFFER 4096
extern wchar_t lastCommentBuffer[COMMENT_BUFFER];
extern bool lastCommentValid;

#ifndef TRUE
#define TRUE -1
#endif

#line 219 "layerd_dpp_parser_beta.y"
#line 228 "layerd_dpp_parser_beta_tab.c"
static int yylhs[] = {                                        -1,
    0,    1,    1,    2,    2,    2,    2,    2,    3,    3,
    8,    8,    4,    4,    4,    5,    5,    5,    5,    5,
   10,   10,   11,   11,   11,   11,   11,    9,    9,   12,
   12,   14,   14,   14,   14,   16,   16,   16,   18,   18,
   19,   21,   21,   21,   21,   13,   13,   13,   13,   13,
   13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
   13,   22,   22,   25,   25,   25,   25,   25,   23,   23,
   27,   27,   24,   24,   28,   28,   28,   28,   28,   28,
   28,   28,   28,   28,   33,   34,   34,   35,   35,   32,
   36,   36,   36,   36,   37,   37,   26,   26,   26,   26,
   26,   26,   38,   38,   39,   39,   39,   40,   40,   41,
   41,   41,   44,   44,   43,   43,   42,   42,   47,   47,
   47,   47,   48,   48,   48,   48,   48,   50,   50,   51,
   51,   54,   54,   54,   55,   55,   55,   45,   45,   45,
   45,   45,   56,   56,   57,   57,   57,   46,   46,   58,
   58,   59,   15,   15,   61,   61,   61,   61,   61,   61,
   61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
   61,   61,   61,   61,   61,   61,   61,   61,   62,   62,
   30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
   30,   30,   29,   64,   66,   66,   67,   67,   31,   60,
   60,   65,   65,   63,   63,   69,   69,   70,   70,   68,
   68,    7,    7,   71,   71,   74,   74,   76,   75,   75,
   75,   75,   77,   72,   78,   73,   73,   73,   73,   73,
   73,   73,   73,   73,   73,   73,   73,   73,   73,   73,
   73,   73,   73,   73,   92,   92,   93,   93,   94,   94,
   94,   94,   80,   89,   89,   90,   82,   91,   91,   91,
   91,   91,   91,   91,   91,   91,   95,   95,   96,   79,
   88,   81,   81,   97,   97,   97,   97,   98,   98,  100,
   99,   99,  101,  101,   83,   83,   84,   84,   85,   85,
   86,   86,   86,   87,   87,   87,   87,  102,  102,  104,
  104,  103,   20,   52,   52,   52,   52,  105,  106,  106,
  107,  107,  107,   53,  108,  108,  109,  109,  110,  110,
  113,  113,  114,  114,  115,  115,  116,  116,  117,  117,
  118,  118,  118,  119,  119,  119,  119,  119,  119,  120,
  120,  120,  121,  121,  121,  122,  122,  122,  122,  123,
  123,  123,  124,  124,  111,  111,  111,  111,  111,  111,
  111,  111,  111,  111,  128,  128,  128,  128,  125,  125,
  125,  125,  125,  125,  125,  125,  125,  125,  125,  130,
  130,  130,  130,  130,  130,  131,  127,  129,  129,  129,
  129,   17,   17,  133,  133,  133,  133,  133,  133,  133,
  133,  133,  133,  133,  133,  133,  133,  133,  133,  133,
  133,  133,  133,  132,  132,  132,  132,  132,  132,  132,
  132,  112,  112,  112,  112,  112,  112,  112,  112,  112,
  112,  112,  126,  126,  126,  126,  126,   49,   49,   49,
   49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
   49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
   49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
   49,   49,   49,   49,   49,   49,    6,    6,
};
static int yylen[] = {                                         2,
    1,    1,    2,    1,    1,    1,    1,    1,    3,    3,
    1,    3,    4,    3,    3,    5,    4,    3,    4,    4,
    1,    2,    1,    1,    1,    1,    1,    1,    3,    1,
    1,    6,    8,    5,    7,    1,    3,    1,    2,    1,
    2,    1,    1,    1,    1,   10,    8,    8,    6,    9,
    7,    7,    5,    4,    6,    6,    8,    9,    7,    7,
    5,    1,    3,    3,    3,    2,    2,    1,    1,    3,
    2,    1,    1,    2,    1,    1,    1,    1,    1,    2,
    1,    2,    1,    1,    4,    1,    3,    1,    2,    4,
    1,    1,    1,    2,    1,    3,    1,    1,    1,    1,
    1,    1,    1,    2,    1,    2,    1,    1,    1,    1,
    1,    2,    1,    2,    1,    2,    2,    3,    1,    1,
    2,    2,    1,    2,    1,    3,    2,    2,    3,    1,
    1,    3,    4,    2,    0,    1,    3,    1,    1,    2,
    3,    4,    1,    2,    1,    1,    1,    2,    3,    1,
    3,    2,    1,    2,    1,    1,    1,    1,    1,    1,
    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    6,    5,    7,    6,    6,    7,    5,    6,    5,    6,
    4,    5,    3,    2,    1,    3,    4,    3,    4,    1,
    2,    1,    3,    3,    2,    2,    2,    2,    2,    1,
    2,    1,    2,    1,    1,    3,    2,    5,    2,    1,
    1,    1,    1,    2,    2,    1,    1,    1,    1,    1,
    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    1,    1,    1,    2,    5,    3,    2,    3,    1,    1,
    2,    2,    2,    5,    7,    5,    7,    9,    7,    8,
    8,    8,    7,    7,    7,    6,    1,    1,    1,    1,
    3,    5,    2,    4,    3,    3,    2,    1,    2,    2,
    1,    2,    3,    2,    3,    2,    3,    2,    3,    2,
    2,    3,    2,    3,    4,    3,    2,    1,    2,    5,
    2,    2,    1,    1,    3,    2,    3,    3,    1,    2,
    1,    1,    1,    1,    1,    3,    1,    3,    1,    5,
    1,    3,    1,    3,    1,    3,    1,    3,    1,    3,
    1,    3,    3,    1,    3,    3,    3,    3,    3,    1,
    3,    3,    1,    3,    3,    1,    3,    3,    3,    1,
    3,    3,    1,    4,    1,    2,    2,    2,    4,    4,
    1,    4,    4,    4,    2,    4,    2,    2,    1,    1,
    6,    4,    4,    3,    2,    3,    3,    2,    2,    4,
    3,    3,    2,    5,    4,    3,    2,    1,    1,    1,
    1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    1,    1,    1,    1,    1,    1,    2,    3,
};
static int yydefred[] = {                                      0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  421,
  416,  417,  415,  414,  418,  419,  420,  212,   28,    0,
    0,    2,    4,    5,    6,    7,    0,    0,  391,    0,
  370,  369,  389,  388,    0,   11,    0,    0,    0,    0,
    0,    0,  167,  168,  170,   97,   98,   99,  100,  101,
  102,  156,  157,  158,  159,  171,  161,  162,  163,  164,
  165,  166,  172,  176,  173,  174,  175,  160,  412,  394,
  413,  395,  396,  397,  398,  399,  400,  401,  402,  403,
  404,  405,  406,  407,  408,  409,  410,  411,  178,  177,
    0,  169,    0,    0,    0,  108,  155,    0,  103,    0,
  107,  153,    0,    0,    0,    0,  368,    0,    0,  365,
  367,    0,    0,    0,    0,    0,  434,  437,    0,    0,
  433,  436,  435,    0,  314,    0,  317,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  350,
    0,    0,  361,    0,    3,  213,    0,    0,    0,    0,
  477,    0,  378,  379,    0,  375,   10,    9,    0,   15,
    0,   14,   18,    0,    0,    0,  139,    0,  117,  120,
  119,    0,    0,  304,  104,  154,    0,    0,  381,    0,
  106,    0,    0,  113,  115,    0,  393,   27,   42,    0,
   45,   43,    0,    0,   44,   23,   26,    0,    0,   21,
   24,   30,   31,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  217,  270,    0,    0,  222,    0,    0,  221,
    0,    0,    0,    0,  226,    0,  249,  250,  210,  214,
  215,    0,    0,  227,  228,  229,  230,  231,  232,  233,
  234,  235,  236,  237,  238,  239,  240,  241,  242,    0,
  353,  387,    0,    0,    0,    0,  356,  357,  308,    0,
  422,  423,  424,  425,  426,  427,  428,  429,  430,  431,
  432,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  358,  478,   29,  374,    0,    0,
  205,    0,    0,    0,    0,    0,   12,   13,   17,    0,
  148,    0,  145,  146,  147,  140,    0,    0,  118,  122,
  121,  306,  386,    0,  385,    0,    0,  128,  130,  131,
  116,    0,  114,    0,  380,    0,   19,   22,    0,    0,
    0,   20,  366,  244,  207,  206,    0,  209,    0,  208,
  247,    0,  286,    0,  288,    0,    0,    0,    0,    0,
    0,  273,    0,  290,    0,  293,  291,    0,  297,    0,
    0,    0,    0,    0,  125,    0,   81,    0,    0,   78,
    0,    0,    0,   73,   75,   76,   77,   83,   84,    0,
    0,    0,    0,  219,    0,  251,  252,    0,  202,    0,
  253,  211,  216,  224,    0,    0,    0,    0,    0,    0,
  316,  318,    0,    0,    0,    0,    0,    0,    0,    0,
  339,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  352,  351,  312,  313,    0,    0,  309,  373,
  204,  372,   16,  149,  144,    0,  307,  305,  129,  134,
  136,    0,  384,    0,    0,    0,    0,    0,    0,    0,
  246,    0,  248,  285,  287,    0,    0,    0,    0,    0,
  268,    0,    0,  289,  292,    0,    0,    0,  296,  298,
   80,    0,    0,  474,  475,  438,  439,  440,  441,  442,
  443,  444,  445,  446,  447,  448,  449,  450,  451,  452,
  453,  454,  455,  456,  457,  458,  459,  460,  461,  462,
  463,  464,  465,  466,  467,  468,  469,  470,  471,  472,
  473,  476,  124,    0,    0,    0,    0,   74,   82,    0,
    0,    0,    0,    0,    0,    0,  271,    0,  201,    0,
  360,  359,  364,  363,  362,  354,    0,    0,  310,  142,
  132,    0,    0,    0,    0,   36,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   62,    0,    0,    0,    0,
   69,   54,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  301,    0,  302,  295,  299,    0,   88,    0,
   86,   91,   92,   93,    0,    0,  126,    0,    0,    0,
  193,    0,    0,    0,  150,  218,  203,  320,  371,  133,
  137,    0,   39,   34,    0,    0,    0,    0,    0,    0,
   61,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   53,  245,    0,  256,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  272,    0,   89,   85,    0,
   95,    0,   90,    0,    0,  199,    0,    0,  180,    0,
  191,  179,    0,  152,    0,    0,   41,  303,   37,    0,
   32,    0,    0,    0,    0,   49,    0,    0,   55,    0,
   63,    0,   56,    0,   70,    0,    0,  266,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  277,    0,    0,
  278,  281,    0,   87,    0,  189,    0,    0,  182,    0,
    0,    0,    0,  195,  187,  192,    0,  151,   35,    0,
    0,   59,    0,   60,    0,    0,   51,   52,  255,  257,
  265,  263,    0,  259,  264,    0,    0,    0,    0,  284,
  275,    0,  279,  276,    0,  282,  300,   96,  185,  190,
    0,  184,  181,    0,    0,    0,  188,   33,    0,   47,
   48,   57,    0,  260,  261,  262,    0,  283,  274,  186,
  183,  198,    0,  196,   58,    0,   50,  258,  197,   46,
};
static int yydgoto[] = {                                      20,
   21,   22,   23,   24,  196,  387,  312,   37,   28,  199,
  200,  390,  202,  203,   95,  565,   96,  566,  623,  677,
  205,  575,  579,  392,  576,   97,  581,  394,  395,  396,
  397,  398,  399,  600,  601,  606,  662,  400,   99,  100,
  181,  101,  182,  183,  170,  171,  172,  401,  533,  549,
  338,  649,  234,  340,  462,  326,  327,  614,  615,  409,
  102,  671,  235,  673,  410,  723,  724,  755,  237,  238,
  239,  240,  241,  110,  242,  111,  402,  243,  244,  245,
  246,  247,  248,  249,  250,  251,  252,  253,  254,  255,
  256,  257,  258,  259,  482,  650,  656,  709,  710,  711,
  712,  488,  489,  490,   29,  448,  449,  125,  126,  127,
  128,  282,  129,  130,  131,  132,  133,  134,  135,  136,
  137,  138,  139,  140,  141,  142,  143,   31,   32,   33,
  103,   34,  104,
};
static int yysindex[] = {                                    297,
 -239, -236, -237,13086, -241, -183, -152,14959,  115,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  297,    0,    0,    0,    0,    0,    0, -178,    0,   99,
    0,    0,    0,    0,  -81,    0, -291,  -34,  -83, -136,
   39,  -55,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  702,    0,14959, -178,13470,    0,    0,    0,    0,    0,
    0,    0,13470, 2069,11396,11396,    0,14959, 1045,    0,
    0,14959,   13,   51,   91,12768,    0,    0,15010,15010,
    0,    0,    0,   60,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,14959,    0,  137,    0,    0,  142,14055, 2414,14959,
    0,  -83,    0,    0,  -83,    0,    0,    0,   66,    0,
   11,    0,    0,10956,14245,   65,    0,   86,    0,    0,
    0,  702, -221,    0,    0,    0,14293,14364,    0,   86,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  145,
    0,    0,  230, -241,    0,    0,    0,    0,11066,    0,
    0,    0,    0,15179,  172,11176,  113,  231, -288, -242,
 -284, -276, -149,  239,  241,11576,  244, -198,14435,11656,
 -189,10942,    0,    0, 4834,  245,    0,  100, -178,    0,
12308,   84,  210,  261,    0, 2732,    0,    0,    0,    0,
    0,  275,  263,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  -33,
    0,    0,12927,12768,13470,  278,    0,    0,    0,14959,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,14959,14959,14959,14959,14959,14959,14959,14959,14959,
13470,14959,14959,14959,14959,14959,14959,14959,14959,14959,
14959,14959,14959,14959,    0,    0,    0,    0,14126, -185,
    0,    0, 2573, -200, -178, -178,    0,    0,    0,11286,
    0,  280,    0,    0,    0,    0,   65, -146,    0,    0,
    0,    0,    0,11727,    0, -158,14364,    0,    0,    0,
    0,    0,    0,14483,    0, -111,    0,    0,  223,  229,
 -141,    0,    0,    0,    0,    0,  281,    0,  232,    0,
    0,  287,    0,  288,    0,  290,14959,14959,   84,  346,
12609,    0,14959,    0,  299,    0,    0,  300,    0,  183,
  302,  286,  292,13804,    0,  -83,    0,    0,  294,    0,
12102, 4834,  295,    0,    0,    0,    0,    0,    0, -252,
  314,  282,11576,    0,  -79,    0,    0, -290,    0,  310,
    0,    0,    0,    0,  319,  321,  322,  324,  325,14959,
    0,    0,  312,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0, -217,13913,    0,    0,
    0,    0,    0,    0,    0,   65,    0,    0,    0,    0,
    0,   61,    0,   96, 2069,   -2,  -47, -232, -219, 2903,
    0,  264,    0,    0,    0,  329,  334,  336,14554, -217,
    0, -197,  338,    0,    0, -190,  335,  183,    0,    0,
    0, -253,  224,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0, -178, -274,  294,  340,    0,    0,  -83,
  331,  294,  343,  159,13182,  341,    0,14959,    0,  210,
    0,    0,    0,    0,    0,    0,14959,  345,    0,    0,
    0,14174,  337,  301,   64,    0,  355,   96, 2069, -232,
 -219, 3013, -219, -178, -128,    0, -248, -178,   26,  -83,
    0,    0, 3123,  342,11576,11576,14959,14602,  352,14959,
14673,  360,    0,12768,    0,    0,    0,  308,    0,  197,
    0,    0,    0,    0,  309,  359,    0,13278,  -50,13374,
    0, -109,  210,  -96,    0,    0,    0,    0,    0,    0,
    0,14959,    0,    0,  311,   96,  103,  369, -126,   29,
    0, 3233, -178,  -83, -219, 3343, -232,  -83, -178, 3453,
 -219, -178,    0,    0,    0,    0,  372,11576, -217,  374,
14721,  375,14792,  376,  -74,    0,  377,    0,    0, -253,
    0,  373,    0, -109,  -18,    0, -109,   22,    0,  -83,
    0,    0,   -1,    0, -109,13470,    0,    0,    0,  122,
    0,   96, -219, 3563, 3673,    0, -178,   46,    0, 3783,
    0, -178,    0, 3893,    0,11576,  379,    0,11576,11576,
  395,11576,11576,  399,14840,14959,  385,    0,    6, 1363,
    0,    0,  335,    0,  348,    0,   -1, -109,    0,   -1,
 -109, -268,  398,    0,    0,    0,   -1,    0,    0,  135,
   87,    0, 4003,    0, 4113, 4223,    0,    0,    0,    0,
    0,    0,11576,    0,    0,11576,11576,  405,  391,    0,
    0, 1522,    0,    0, 2732,    0,    0,    0,    0,    0,
   -1,    0,    0,   -1,14911,  -83,    0,    0, 4333,    0,
    0,    0, 4443,    0,    0,    0,11576,    0,    0,    0,
    0,    0, -139,    0,    0, 4553,    0,    0,    0,    0,
};
static int yyrindex[] = {                                      0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    4,    0,    0,    0,    0,    0,  813, 5493,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0, 5640,    0,    0,    0, 7346,    0,11798,
    0,    0,    0, 4905,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0, 6081,    0,10785, 7493, 6228,
 6361, 6503, 6646, 7627,10209, 7774, 7919, 9792, 8056,    0,
10650,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0, 1949,    0, 5052,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0, 5199,11937,    0,    0, 8203,    0,    0,    0,    0,
    0,    0, -172,12410,    0,    0,    0,11505,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,15161,    0,13781, 6296,    0,
    0,12512,    0,    0,    0,  406,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,15211,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0, 1681,    0,    0, 5787, 5934,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0, 2096,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  407,    0,    0,    0,
    0, 5346,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0, 4663,   48,    0,
    0,  380,12205,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  -73,    0, -230,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0, 6787, 6920, 7062, 7205, 8350,10356,10503,
    0, 8497, 8642, 8787, 8932, 9077, 9214, 9931,10070, 9351,
 9498, 9645,    0,    0,    0,    0,13984,    0,    0,    0,
    0,    0,    0,    0,    0, 2243,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  -56,
    0,    0,    0,    0,    0,    0,    0, 1204,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  412,    0, -231,    0,    0,    0,    0,
    5,  416,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  146,  149,    0,    0,    0,    0,    0,    0,
    0,    0,    0, -119,    0,    0,    0,   93,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0, -106,    0,    0,    0,    0,    0, -100,    0,
    0,  119,    0,    0, 1840,    0,    0,    0,   60,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  413,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  -92,    0,    0,    0,
    0,  -45,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  138,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   19,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
};
static int yycindex[] = {                                      0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  356,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    8,    0, -110,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  378,    0,  558, -209,  400,
  392,  393,  394,  158,   58,  176,  189,   16,  168,    0,
  234,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  423,  -69,    0,    0,   10,    0,    0,    0,    0,
    0,    0,13566,    0,    0,    0,    0,  366,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,13657, -299,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  424,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  370,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  430,    0,    0,    0,
    0,  432,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  382,  177,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  415,  410,  418,  408,  175,   63,  178,
    0,  191,  193,  212,  216,  196,  226,   30,   59,  204,
  206,  213,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  445,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  494,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
};
static int yygindex[] = {                                    706,
    0,  797,    0,    0,  114,    7,    1,    0,  188,  -62,
 -165,  -76,    0,    0,  296, -523, -427,  194,    0,    0,
 -188,  251, -498, -428,  190,  519,  195, -387,    0,    0,
    0,    0,    0,    0,  170,    0,    0,    2,  -86,  -64,
    0,    0,  648,    0,  104,  -88,    0, -321,    0,  -20,
 -326,  -91,  298,    0,    0, -296,    0, -285,  161, -504,
  -82,  192,   89, -405,  434,    0,   69,  162, -207, -206,
 -233,    0, -216,    0,    0,    0,    0, -363,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  248, -419,    0,    0,  129,  130,
 -513,    0,  357,  361,    0,    0,  396,  573,  565,  291,
  721,    0,    0,  567,  569,  566,  568,  574,  349,  257,
  347,  350,  266, -102,   15,    0,    0,    0,    0,    0,
    0,    0,  753,
};
#define YYTABLESIZE 15629
static int yytable[] = {                                     370,
   27,  173,  412,    1,  538,   98,   26,  481,  175,  262,
  461,  185,  176,  357,   30,  350,   35,  598,   41,   38,
  638,   27,   39,  144,  406,  407,  169,   26,  201,  201,
  455,  607,  230,  348,  332,   30,  573,  567,  332,  305,
  348,  583,  350,  206,  627,  617,   46,   47,   48,   49,
   50,   51,  384,  385,  540,  332,  310,  372,  314,   46,
   47,   48,   49,   50,   51,  593,  379,  225,  416,  537,
  332,  416,  630,  109,  109,  109,  548,  179,  543,  412,
  149,  158,  159,  331,  355,  336,  178,  201,  361,  165,
  165,  165,  165,  341,  185,  416,  363,  332,  765,  416,
  590,  320,  680,  107,  186,  198,  198,  329,  674,  228,
  233,  197,  197,   25,  147,   26,  332,  266,  156,   30,
   30,  176,  201,  260,  468,  469,  149,  105,  386,  201,
  358,  165,  165,  165,   25,  123,  688,  225,  635,  109,
  683,  628,  225,  632,  175,  362,  333,   68,  176,  109,
  233,  404,  334,  364,  348,  307,  334,  169,  730,  560,
   66,  406,  407,  109,  198,  345,   67,  109,  373,  599,
  197,  452,   57,  334,   64,  591,  594,  541,   30,  149,
   60,   19,  450,   36,  731,  106,  547,  359,  334,   40,
   42,   94,   19,   19,   98,  538,  756,   19,  109,  198,
  443,  444,  350,  184,  147,  197,  198,  690,  165,  459,
   19,  694,  197,   30,  108,  334,  109,  447,  570,  571,
   30,   65,   25,  365,  200,  388,  161,  470,  789,  156,
  481,  701,  156,  704,  334,  621,  162,  233,  756,   30,
  636,  267,  684,  201,  538,  637,  147,  637,  456,   68,
  706,  707,  336,  341,   68,  733,  735,  464,  717,  149,
    9,  720,   66,  669,  415,  417,  419,   66,   67,  727,
  236,  675,  465,   67,  670,  330,   64,  676,  168,  480,
  366,   64,   94,  307,   12,  748,  343,  180,   15,  149,
   94,  157,  431,  358,  200,  708,  229,  356,  360,  200,
  200,  147,  538,  229,  175,  124,  538,  773,  176,  380,
  313,  267,  761,  164,  233,  764,  267,  556,  149,   18,
  198,  572,  665,   65,  668,  150,  197,  147,   65,  153,
  706,  707,  147,  148,   30,  149,  229,  150,  160,  315,
  786,  152,  316,  280,  280,  538,   19,  538,  156,  718,
  323,  324,  109,  109,  109,  676,  447,  153,  154,  168,
  156,  189,  190,  191,  192,  325,  568,  149,  645,  646,
  180,  669,  233,    1,    3,  751,  159,  200,  200,  263,
   94,  569,  155,  318,    6,  538,  162,   28,  280,  721,
  174,  209,  388,  147,  640,  676,  405,  685,  538,  641,
  204,  204,  641,  195,  231,  207,   30,  163,    4,  168,
  108,  111,  389,  124,  736,  114,  390,  264,   94,  641,
  390,   81,  390,  229,  522,  525,  456,  269,  109,  528,
  561,  698,    7,  624,  562,   84,   87,  625,  390,  390,
  459,  462,  109,   90,   93,  174,  109,  174,  465,  468,
  229,  229,   94,  531,  534,  769,  336,  265,  537,  204,
  641,   72,  322,  390,  564,  148,   72,  149,  328,  150,
  388,  151,  681,  152,  174,  339,  625,  109,   94,  739,
  353,    8,  741,  742,   30,  744,  745,   71,  317,  153,
  154,  729,   71,  360,  204,  625,  602,  603,  604,  605,
  229,  204,  480,  148,  768,  149,  194,  150,  625,  306,
  194,  152,  486,  487,  155,   40,  375,  378,   38,   40,
  391,  412,   38,  204,   18,  563,  774,  153,  154,  775,
  776,  611,  550,   10,   11,   12,   13,   14,   15,   16,
   17,  471,   75,  434,   19,   78,  613,  416,  432,  433,
  434,  435,  155,    1,    2,  474,  477,    3,  229,  450,
  788,  418,  453,  480,  483,  440,  441,  442,  564,  659,
  660,  307,  388,  534,  346,  595,   96,   99,  536,  389,
  423,  102,  105,  388,  117,  120,   30,  542,  510,  513,
    4,  486,  489,  492,  495,  233,   93,   30,    5,    6,
  123,  351,  126,  354,  129,  367,  174,  368,  132,  613,
  371,  613,  498,  501,    7,  204,  504,  507,  516,  519,
  540,  543,  546,  549,  135,  138,  564,  232,  403,  552,
  555,  458,  388,  411,  339,  414,  388,  429,  430,  408,
  388,  174,  436,  437,  413,  420,   30,  438,  439,  141,
   30,  454,  466,  471,   30,  574,  578,  389,  467,  473,
  474,  472,  475,    8,  476,  477,  478,  232,  174,  492,
  483,  484,  485,  783,  491,  493,  535,  613,  539,    9,
  545,  546,  564,  550,  388,  388,  551,  391,  552,  553,
  388,  554,  555,  584,  388,  557,  585,  666,   30,   30,
  672,  586,  587,  149,   30,  592,  608,  178,   30,  610,
  616,  233,  619,  622,  644,   10,   11,   12,   13,   14,
   15,   16,   17,  626,  651,   18,   19,  609,  655,  146,
  658,  663,   94,  388,  369,  388,  388,  682,  661,  697,
  563,  699,  702,  393,  713,  174,  715,   30,  705,   30,
   30,  740,  672,  233,  232,  672,  233,  574,  578,  389,
  633,  672,  743,  672,  639,  391,  746,  642,  750,  388,
  389,  766,  777,  388,  778,  220,  589,  758,  127,  223,
  135,  229,  123,   30,    0,   94,  388,   30,   63,   66,
   72,   69,   21,  144,  318,   94,  420,   94,  423,  426,
   30,  757,  429,  438,  447,  672,  672,  441,  672,  672,
  432,  558,    8,  561,  227,  672,  444,  145,  679,  389,
  629,  687,  578,  389,  574,  692,  691,  389,  578,  714,
  342,  232,  261,  544,  784,  695,  728,  752,  753,  267,
  268,  657,  421,  559,  596,  174,  422,  618,  597,  672,
  424,  426,  672,  425,  427,  716,  187,  722,  719,  339,
    0,  428,  261,   94,  725,    0,  726,  391,    0,    0,
  578,  389,  389,    0,    0,    0,    0,  389,  391,    0,
    0,  389,    0,    0,  647,  174,    0,  652,  654,    0,
    0,  174,    0,    0,    0,    0,    0,  229,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,  759,  760,
  393,  762,  763,    0,    0,    0,    0,    0,  767,  678,
  389,  369,  389,  389,    0,    0,    0,  391,    0,    0,
    0,  391,    0,    0,   24,  391,    0,    0,    0,  229,
    0,    0,  229,    0,    0,    0,    0,    0,  174,    0,
  174,    0,  780,  722,    0,  781,  389,    0,    0,    0,
  389,   27,   30,   33,   36,   39,   42,   45,   48,   51,
   54,    0,    0,  389,    0,    0,    0,    0,    0,  391,
  391,    0,    0,  416,    0,  391,  577,  580,  393,  391,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  174,  749,  261,  261,  261,  261,  261,  261,
  261,    0,  261,  261,  261,  261,  261,  261,  261,  261,
  261,  261,  261,  261,  261,    0,    0,    0,  391,    0,
  391,  391,    0,    0,    0,    0,   69,   70,   71,   72,
   73,   74,   75,   76,   77,   78,    0,   79,   80,   81,
   82,   83,   84,   85,   86,   87,   88,    0,    0,    0,
    0,    0,  174,    0,  391,    0,    0,    0,  391,    8,
    8,    0,  165,    8,    0,    0,    0,    0,    0,    0,
    0,  391,    0,    0,    0,    0,    0,    0,  577,  580,
  393,  634,    0,    0,    0,    0,  166,    0,    0,    0,
  167,  393,    0,  369,  369,    0,    8,    0,    0,    0,
    0,    0,    0,    0,    8,    8,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    8,   19,    0,    0,    0,    0,    0,    0,    0,    0,
  261,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  393,    0,    0,  580,  393,  577,    0,    0,  393,  580,
    0,    0,    0,    0,    0,    0,  369,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    8,
    0,    0,    8,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    8,    0,    0,    0,    0,
    0,  580,  393,  393,    0,    0,    0,    0,  393,    0,
    0,    0,  393,    0,  369,    0,    0,  369,  369,    0,
  369,  369,    0,    0,    0,    0,    0,    0,  232,    0,
    0,    8,    8,    8,    8,    8,    8,    8,    8,    0,
    0,    0,    8,    0,    0,    0,    0,    0,    0,    0,
    0,  393,    0,  393,  393,    0,    0,    0,    0,    0,
    0,  369,    0,    0,  369,  369,    0,    0,    0,    0,
  232,    0,    0,  232,    0,    0,    0,  261,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  393,    0,    0,
    0,  393,    0,    0,    0,  369,    0,    0,    0,    0,
  208,    1,    2,    0,  393,    3,  189,  190,  191,  192,
    0,    0,   43,   44,    0,    0,    0,    0,    0,    0,
    0,   45,    0,   46,   47,   48,   49,   50,   51,   52,
   53,   54,   55,   56,   57,   58,   59,   60,  193,   62,
   63,   64,   65,   66,   67,    0,  194,    6,  195,    0,
    0,    0,  209,    0,    0,    0,    0,  210,  211,  212,
  213,    0,    7,  214,    0,  215,  216,  217,  218,    0,
    0,  219,  220,  221,    0,    0,    0,    0,  112,   69,
   70,   71,   72,   73,   74,   75,   76,   77,   78,    0,
   79,   80,   81,   82,   83,   84,   85,   86,   87,   88,
   89,    0,   90,    0,  113,  222,  115,   92,    0,    0,
    0,  116,    0,  149,  223,    0,    0,  224,    0,    0,
    0,    0,    0,    0,  117,  118,    0,    9,    0,    0,
    0,    0,    0,    0,    0,  119,  120,    0,  121,  122,
    0,  123,    0,    0,  225,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  294,
    0,    0,    0,   10,   11,   12,   13,   14,   15,   16,
   17,  294,  294,   18,  226,    0,    0,    0,    0,    0,
  294,    0,  294,  294,  294,  294,  294,  294,  294,  294,
  294,  294,  294,  294,  294,  294,  294,  294,  294,  294,
  294,  294,  294,  294,    0,  294,    0,    0,    0,    0,
    0,  294,    0,    0,    0,    0,  294,  294,  294,  294,
    0,  294,  294,  294,  294,  294,  294,  294,  294,  294,
  294,  294,  294,    0,    0,    0,    0,  294,  294,  294,
  294,  294,  294,  294,  294,  294,  294,  294,    0,  294,
  294,  294,  294,  294,  294,  294,  294,  294,  294,  294,
    0,  294,    0,  294,  294,  294,  294,    0,    0,    0,
  294,    0,  294,  294,    0,    0,  294,    0,    0,    0,
    0,    0,    0,  294,  294,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  294,  294,    0,  294,  294,    0,
  294,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,  208,    0,
    0,    0,  294,  294,  294,  294,  294,  294,  294,  294,
   43,   44,  294,  294,    0,    0,    0,    0,    0,   45,
    0,   46,   47,   48,   49,   50,   51,   52,   53,   54,
   55,   56,   57,   58,   59,   60,  193,   62,   63,   64,
   65,   66,   67,    0,   68,    0,    0,    0,    0,    0,
  209,    0,    0,    0,    0,  210,  211,  212,  213,    0,
    7,  214,    0,  215,  216,  217,  218,  706,  707,  219,
  220,  221,    0,    0,    0,    0,  112,   69,   70,   71,
   72,   73,   74,   75,   76,   77,   78,    0,   79,   80,
   81,   82,   83,   84,   85,   86,   87,   88,   89,    0,
   90,    0,  113,  222,  115,   92,    0,    0,    0,  116,
    0,  149,  754,    0,    0,  224,    0,    0,    0,    0,
    0,    0,  117,  118,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  119,  120,    0,  121,  122,    0,  123,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  208,    0,    0,
    0,   10,   11,   12,   13,   14,   15,   16,   17,   43,
   44,   18,  226,    0,    0,    0,    0,    0,   45,    0,
   46,   47,   48,   49,   50,   51,   52,   53,   54,   55,
   56,   57,   58,   59,   60,  193,   62,   63,   64,   65,
   66,   67,    0,   68,    0,    0,    0,    0,    0,  209,
    0,    0,    0,    0,  210,  211,  212,  213,    0,    7,
  214,    0,  215,  216,  217,  218,  706,  707,  219,  220,
  221,    0,    0,    0,    0,  112,   69,   70,   71,   72,
   73,   74,   75,   76,   77,   78,    0,   79,   80,   81,
   82,   83,   84,   85,   86,   87,   88,   89,    0,   90,
    0,  113,  222,  115,   92,    0,    0,    0,  116,    0,
  149,  779,    0,    0,  224,    0,    0,    0,    0,    0,
    0,  117,  118,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  119,  120,    0,  121,  122,    0,  123,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  243,    0,    0,    0,
   10,   11,   12,   13,   14,   15,   16,   17,  243,  243,
   18,  226,    0,    0,    0,    0,    0,  243,    0,  243,
  243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
  243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
  243,    0,  243,    0,    0,    0,    0,    0,  243,    0,
    0,    0,    0,  243,  243,  243,  243,    0,  243,  243,
  243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
    0,    0,    0,    0,  243,  243,  243,  243,  243,  243,
  243,  243,  243,  243,  243,    0,  243,  243,  243,  243,
  243,  243,  243,  243,  243,  243,  243,    0,  243,    0,
  243,  243,  243,  243,    0,    0,    0,  243,    0,  243,
  243,    0,    0,  243,    0,    0,    0,    0,    0,    0,
  243,  243,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  243,  243,    0,  243,  243,    0,  243,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  254,    0,    0,    0,  243,
  243,  243,  243,  243,  243,  243,  243,  254,  254,    0,
  243,    0,    0,    0,    0,    0,  254,    0,  254,  254,
  254,  254,  254,  254,  254,  254,  254,  254,  254,  254,
  254,  254,  254,  254,  254,  254,  254,  254,  254,  254,
    0,  254,    0,    0,    0,    0,    0,  254,    0,    0,
    0,    0,  254,  254,  254,  254,    0,  254,  254,    0,
  254,  254,  254,  254,  254,  254,  254,  254,  254,    0,
    0,    0,    0,  254,  254,  254,  254,  254,  254,  254,
  254,  254,  254,  254,    0,  254,  254,  254,  254,  254,
  254,  254,  254,  254,  254,  254,    0,  254,    0,  254,
  254,  254,  254,    0,  138,    0,  254,    0,  254,  254,
    0,    0,  254,    0,    0,    0,    0,    0,    0,  254,
  254,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  254,  254,    0,  254,  254,    0,  254,    0,    0,    0,
    0,    0,  138,    0,    0,    0,  138,    0,    0,    0,
    0,    0,    0,  138,  138,  138,    0,    0,  254,  254,
  254,  254,  254,  254,  254,  254,  138,    0,  254,  254,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  138,  138,  138,  138,  138,  138,  138,  138,
  138,  138,  138,    0,  138,  138,  138,  138,  138,  138,
  138,  138,  138,  138,    0,    0,    0,    0,  138,  138,
  138,    0,  138,    0,    0,  138,  138,  138,  138,  138,
  138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
  138,    0,  138,  138,  138,  138,  138,  138,  138,  138,
  138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
  138,  143,  138,  138,  138,  138,  138,  138,  138,  138,
  138,  138,    0,  138,  138,  138,  138,  138,  138,  138,
  138,  138,  138,  138,  138,    0,    0,    0,  138,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  143,
    0,    0,    0,  143,    0,    0,    0,    0,    0,    0,
  143,  143,  143,   69,   70,   71,   72,   73,   74,   75,
   76,   77,   78,  143,   79,   80,   81,   82,   83,   84,
   85,   86,   87,   88,    0,    0,    0,    0,    0,  143,
  143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
    0,  143,  143,  143,  143,  143,  143,  143,  143,  143,
  143,    0,    0,    0,    0,  143,  143,  143,    0,  143,
    0,    0,  143,  143,  143,  143,  143,  143,  143,  143,
  143,  143,  143,  143,  143,  143,  143,  143,    0,  143,
  143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
  143,  143,  143,  143,  143,  143,  143,  143,  141,  143,
  143,  143,  143,  143,  143,  143,  143,  143,  143,    0,
  143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
  143,  143,    0,    0,    0,  143,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  141,    0,    0,    0,
  141,    0,    0,    0,    0,    0,    0,  141,  141,  141,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  141,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  141,  141,  141,  141,
  141,  141,  141,  141,  141,  141,  141,    0,  141,  141,
  141,  141,  141,  141,  141,  141,  141,  141,    0,    0,
    0,    0,  141,  141,  141,    0,  141,    0,    0,  141,
  141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
  141,  141,  141,  141,  141,    0,  141,  141,  141,  141,
  141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
  141,  141,  141,  141,  141,    0,  141,  141,  141,  141,
  141,  141,  141,  141,  141,  141,    0,  141,  141,  141,
  141,  141,  141,  141,  141,  141,  141,  141,  141,  208,
    0,    0,  141,    0,    0,    0,    0,    0,    0,    0,
    0,   43,   44,    0,    0,    0,    0,    0,    0,    0,
   45,    0,   46,   47,   48,   49,   50,   51,   52,   53,
   54,   55,   56,   57,   58,   59,   60,  193,   62,   63,
   64,   65,   66,   67,    0,   68,    0,    0,    0,    0,
    0,  209,    0,    0,    0,    0,  210,  211,  212,  213,
    0,    7,  214,    0,  215,  216,  217,  218,    0,    0,
  219,  220,  221,    0,    0,    0,    0,  112,   69,   70,
   71,   72,   73,   74,   75,   76,   77,   78,    0,   79,
   80,   81,   82,   83,   84,   85,   86,   87,   88,   89,
    0,   90,    0,  113,  222,  115,   92,    0,    0,    0,
  116,    0,  149,  311,    0,    0,  224,    0,    0,    0,
    0,    0,    0,  117,  118,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  119,  120,    0,  121,  122,    0,
  123,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,  208,    0,
    0,    0,   10,   11,   12,   13,   14,   15,   16,   17,
   43,   44,   18,  226,    0,    0,    0,    0,    0,   45,
    0,   46,   47,   48,   49,   50,   51,   52,   53,   54,
   55,   56,   57,   58,   59,   60,  193,   62,   63,   64,
   65,   66,   67,    0,   68,    0,    0,    0,    0,    0,
  209,    0,    0,    0,    0,  210,  211,  212,  213,    0,
    7,  214,    0,  215,  216,  217,  218,    0,    0,  219,
  220,  221,    0,    0,    0,    0,  112,   69,   70,   71,
   72,   73,   74,   75,   76,   77,   78,    0,   79,   80,
   81,   82,   83,   84,   85,   86,   87,   88,   89,    0,
   90,    0,  113,  222,  115,   92,    0,    0,    0,  116,
    0,  149,  451,    0,    0,  224,    0,    0,    0,    0,
    0,    0,  117,  118,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  119,  120,    0,  121,  122,    0,  123,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  208,    0,    0,
    0,   10,   11,   12,   13,   14,   15,   16,   17,   43,
   44,   18,  226,    0,    0,    0,    0,    0,   45,    0,
   46,   47,   48,   49,   50,   51,   52,   53,   54,   55,
   56,   57,   58,   59,   60,  193,   62,   63,   64,   65,
   66,   67,    0,   68,    0,    0,    0,    0,    0,  209,
    0,    0,    0,    0,  210,  211,  212,  213,    0,    7,
  214,    0,  215,  216,  217,  218,    0,    0,  219,  220,
  221,    0,    0,    0,    0,  112,   69,   70,   71,   72,
   73,   74,   75,   76,   77,   78,    0,   79,   80,   81,
   82,   83,   84,   85,   86,   87,   88,   89,    0,   90,
    0,  113,  222,  115,   92,    0,    0,    0,  116,    0,
  149,    0,    0,    0,  224,    0,    0,    0,    0,    0,
    0,  117,  118,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  119,  120,    0,  121,  122,    0,  123,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
   10,   11,   12,   13,   14,   15,   16,   17,  381,    0,
   18,  226,    0,    0,  189,  190,  191,  192,    0,    0,
   43,   44,  382,    0,  383,    0,    0,    0,    0,   45,
    0,   46,   47,   48,   49,   50,   51,   52,   53,   54,
   55,   56,   57,   58,   59,   60,  193,   62,   63,   64,
   65,   66,   67,    0,   68,    0,  195,  384,  385,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    7,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   69,   70,   71,
   72,   73,   74,   75,   76,   77,   78,    0,   79,   80,
   81,   82,   83,   84,   85,   86,   87,   88,   89,    0,
   90,    0,    0,   91,    0,   92,    0,    0,  381,    8,
    0,    0,  582,    0,  189,  190,  191,  192,    0,    0,
   43,   44,  382,  386,  383,    9,    0,    0,    0,   45,
    0,   46,   47,   48,   49,   50,   51,   52,   53,   54,
   55,   56,   57,   58,   59,   60,  193,   62,   63,   64,
   65,   66,   67,    0,   68,    0,  195,  384,  385,    0,
    0,   10,   11,   12,   13,   14,   15,   16,   17,    0,
    7,   18,   19,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   69,   70,   71,
   72,   73,   74,   75,   76,   77,   78,    0,   79,   80,
   81,   82,   83,   84,   85,   86,   87,   88,   89,    0,
   90,    0,    0,   91,    0,   92,    0,    0,  381,    8,
    0,    0,  631,    0,  189,  190,  191,  192,    0,    0,
   43,   44,  382,  386,  383,    9,    0,    0,    0,   45,
    0,   46,   47,   48,   49,   50,   51,   52,   53,   54,
   55,   56,   57,   58,   59,   60,  193,   62,   63,   64,
   65,   66,   67,    0,   68,    0,  195,  384,  385,    0,
    0,   10,   11,   12,   13,   14,   15,   16,   17,    0,
    7,   18,   19,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   69,   70,   71,
   72,   73,   74,   75,   76,   77,   78,    0,   79,   80,
   81,   82,   83,   84,   85,   86,   87,   88,   89,    0,
   90,    0,    0,   91,    0,   92,    0,    0,  381,    8,
    0,    0,  643,    0,  189,  190,  191,  192,    0,    0,
   43,   44,  382,  386,  383,    9,    0,    0,    0,   45,
    0,   46,   47,   48,   49,   50,   51,   52,   53,   54,
   55,   56,   57,   58,   59,   60,  193,   62,   63,   64,
   65,   66,   67,    0,   68,    0,  195,  384,  385,    0,
    0,   10,   11,   12,   13,   14,   15,   16,   17,    0,
    7,   18,   19,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   69,   70,   71,
   72,   73,   74,   75,   76,   77,   78,    0,   79,   80,
   81,   82,   83,   84,   85,   86,   87,   88,   89,    0,
   90,    0,    0,   91,    0,   92,    0,    0,  381,    8,
    0,    0,  686,    0,  189,  190,  191,  192,    0,    0,
   43,   44,  382,  386,  383,    9,    0,    0,    0,   45,
    0,   46,   47,   48,   49,   50,   51,   52,   53,   54,
   55,   56,   57,   58,   59,   60,  193,   62,   63,   64,
   65,   66,   67,    0,   68,    0,  195,  384,  385,    0,
    0,   10,   11,   12,   13,   14,   15,   16,   17,    0,
    7,   18,   19,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   69,   70,   71,
   72,   73,   74,   75,   76,   77,   78,    0,   79,   80,
   81,   82,   83,   84,   85,   86,   87,   88,   89,    0,
   90,    0,    0,   91,    0,   92,    0,    0,  381,    8,
    0,    0,  689,    0,  189,  190,  191,  192,    0,    0,
   43,   44,  382,  386,  383,    9,    0,    0,    0,   45,
    0,   46,   47,   48,   49,   50,   51,   52,   53,   54,
   55,   56,   57,   58,   59,   60,  193,   62,   63,   64,
   65,   66,   67,    0,   68,    0,  195,  384,  385,    0,
    0,   10,   11,   12,   13,   14,   15,   16,   17,    0,
    7,   18,   19,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   69,   70,   71,
   72,   73,   74,   75,   76,   77,   78,    0,   79,   80,
   81,   82,   83,   84,   85,   86,   87,   88,   89,    0,
   90,    0,    0,   91,    0,   92,    0,    0,  381,    8,
    0,    0,  693,    0,  189,  190,  191,  192,    0,    0,
   43,   44,  382,  386,  383,    9,    0,    0,    0,   45,
    0,   46,   47,   48,   49,   50,   51,   52,   53,   54,
   55,   56,   57,   58,   59,   60,  193,   62,   63,   64,
   65,   66,   67,    0,   68,    0,  195,  384,  385,    0,
    0,   10,   11,   12,   13,   14,   15,   16,   17,    0,
    7,   18,   19,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   69,   70,   71,
   72,   73,   74,   75,   76,   77,   78,    0,   79,   80,
   81,   82,   83,   84,   85,   86,   87,   88,   89,    0,
   90,    0,    0,   91,    0,   92,    0,    0,  381,    8,
    0,    0,  732,    0,  189,  190,  191,  192,    0,    0,
   43,   44,  382,  386,  383,    9,    0,    0,    0,   45,
    0,   46,   47,   48,   49,   50,   51,   52,   53,   54,
   55,   56,   57,   58,   59,   60,  193,   62,   63,   64,
   65,   66,   67,    0,   68,    0,  195,  384,  385,    0,
    0,   10,   11,   12,   13,   14,   15,   16,   17,    0,
    7,   18,   19,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   69,   70,   71,
   72,   73,   74,   75,   76,   77,   78,    0,   79,   80,
   81,   82,   83,   84,   85,   86,   87,   88,   89,    0,
   90,    0,    0,   91,    0,   92,    0,    0,  381,    8,
    0,    0,  734,    0,  189,  190,  191,  192,    0,    0,
   43,   44,  382,  386,  383,    9,    0,    0,    0,   45,
    0,   46,   47,   48,   49,   50,   51,   52,   53,   54,
   55,   56,   57,   58,   59,   60,  193,   62,   63,   64,
   65,   66,   67,    0,   68,    0,  195,  384,  385,    0,
    0,   10,   11,   12,   13,   14,   15,   16,   17,    0,
    7,   18,   19,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   69,   70,   71,
   72,   73,   74,   75,   76,   77,   78,    0,   79,   80,
   81,   82,   83,   84,   85,   86,   87,   88,   89,    0,
   90,    0,    0,   91,    0,   92,    0,    0,  381,    8,
    0,    0,  737,    0,  189,  190,  191,  192,    0,    0,
   43,   44,  382,  386,  383,    9,    0,    0,    0,   45,
    0,   46,   47,   48,   49,   50,   51,   52,   53,   54,
   55,   56,   57,   58,   59,   60,  193,   62,   63,   64,
   65,   66,   67,    0,   68,    0,  195,  384,  385,    0,
    0,   10,   11,   12,   13,   14,   15,   16,   17,    0,
    7,   18,   19,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   69,   70,   71,
   72,   73,   74,   75,   76,   77,   78,    0,   79,   80,
   81,   82,   83,   84,   85,   86,   87,   88,   89,    0,
   90,    0,    0,   91,    0,   92,    0,    0,  381,    8,
    0,    0,  738,    0,  189,  190,  191,  192,    0,    0,
   43,   44,  382,  386,  383,    9,    0,    0,    0,   45,
    0,   46,   47,   48,   49,   50,   51,   52,   53,   54,
   55,   56,   57,   58,   59,   60,  193,   62,   63,   64,
   65,   66,   67,    0,   68,    0,  195,  384,  385,    0,
    0,   10,   11,   12,   13,   14,   15,   16,   17,    0,
    7,   18,   19,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   69,   70,   71,
   72,   73,   74,   75,   76,   77,   78,    0,   79,   80,
   81,   82,   83,   84,   85,   86,   87,   88,   89,    0,
   90,    0,    0,   91,    0,   92,    0,    0,  381,    8,
    0,    0,  770,    0,  189,  190,  191,  192,    0,    0,
   43,   44,  382,  386,  383,    9,    0,    0,    0,   45,
    0,   46,   47,   48,   49,   50,   51,   52,   53,   54,
   55,   56,   57,   58,   59,   60,  193,   62,   63,   64,
   65,   66,   67,    0,   68,    0,  195,  384,  385,    0,
    0,   10,   11,   12,   13,   14,   15,   16,   17,    0,
    7,   18,   19,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   69,   70,   71,
   72,   73,   74,   75,   76,   77,   78,    0,   79,   80,
   81,   82,   83,   84,   85,   86,   87,   88,   89,    0,
   90,    0,    0,   91,    0,   92,    0,    0,  381,    8,
    0,    0,  771,    0,  189,  190,  191,  192,    0,    0,
   43,   44,  382,  386,  383,    9,    0,    0,    0,   45,
    0,   46,   47,   48,   49,   50,   51,   52,   53,   54,
   55,   56,   57,   58,   59,   60,  193,   62,   63,   64,
   65,   66,   67,    0,   68,    0,  195,  384,  385,    0,
    0,   10,   11,   12,   13,   14,   15,   16,   17,    0,
    7,   18,   19,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   69,   70,   71,
   72,   73,   74,   75,   76,   77,   78,    0,   79,   80,
   81,   82,   83,   84,   85,   86,   87,   88,   89,    0,
   90,    0,    0,   91,    0,   92,    0,    0,  381,    8,
    0,    0,  772,    0,  189,  190,  191,  192,    0,    0,
   43,   44,  382,  386,  383,    9,    0,    0,    0,   45,
    0,   46,   47,   48,   49,   50,   51,   52,   53,   54,
   55,   56,   57,   58,   59,   60,  193,   62,   63,   64,
   65,   66,   67,    0,   68,    0,  195,  384,  385,    0,
    0,   10,   11,   12,   13,   14,   15,   16,   17,    0,
    7,   18,   19,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   69,   70,   71,
   72,   73,   74,   75,   76,   77,   78,    0,   79,   80,
   81,   82,   83,   84,   85,   86,   87,   88,   89,    0,
   90,    0,    0,   91,    0,   92,    0,    0,  381,    8,
    0,    0,  785,    0,  189,  190,  191,  192,    0,    0,
   43,   44,  382,  386,  383,    9,    0,    0,    0,   45,
    0,   46,   47,   48,   49,   50,   51,   52,   53,   54,
   55,   56,   57,   58,   59,   60,  193,   62,   63,   64,
   65,   66,   67,    0,   68,    0,  195,  384,  385,    0,
    0,   10,   11,   12,   13,   14,   15,   16,   17,    0,
    7,   18,   19,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   69,   70,   71,
   72,   73,   74,   75,   76,   77,   78,    0,   79,   80,
   81,   82,   83,   84,   85,   86,   87,   88,   89,    0,
   90,    0,    0,   91,    0,   92,    0,    0,  381,    8,
    0,    0,  787,    0,  189,  190,  191,  192,    0,    0,
   43,   44,  382,  386,  383,    9,    0,    0,    0,   45,
    0,   46,   47,   48,   49,   50,   51,   52,   53,   54,
   55,   56,   57,   58,   59,   60,  193,   62,   63,   64,
   65,   66,   67,    0,   68,    0,  195,  384,  385,    0,
    0,   10,   11,   12,   13,   14,   15,   16,   17,    0,
    7,   18,   19,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   69,   70,   71,
   72,   73,   74,   75,   76,   77,   78,    0,   79,   80,
   81,   82,   83,   84,   85,   86,   87,   88,   89,    0,
   90,    0,    0,   91,    0,   92,    0,    0,   79,    8,
    0,    0,  790,    0,   79,   79,   79,   79,    0,    0,
   79,   79,   79,  386,   79,    9,    0,    0,    0,   79,
    0,   79,   79,   79,   79,   79,   79,   79,   79,   79,
   79,   79,   79,   79,   79,   79,   79,   79,   79,   79,
   79,   79,   79,    0,   79,    0,   79,   79,   79,    0,
    0,   10,   11,   12,   13,   14,   15,   16,   17,    0,
   79,   18,   19,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   79,   79,   79,
   79,   79,   79,   79,   79,   79,   79,    0,   79,   79,
   79,   79,   79,   79,   79,   79,   79,   79,   79,    0,
   79,    0,    0,   79,    0,   79,    0,    0,    0,   79,
    0,    0,   79,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   79,    0,   79,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   79,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   79,   79,   79,   79,   79,   79,   79,   79,  381,
    0,    0,   79,    0,    0,  189,  190,  191,  192,    0,
    0,   43,   44,  382,    0,  383,    0,    0,    0,    0,
   45,    0,   46,   47,   48,   49,   50,   51,   52,   53,
   54,   55,   56,   57,   58,   59,   60,  193,   62,   63,
   64,   65,   66,   67,    0,   68,    0,  195,  384,  385,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    7,    0,    0,    0,    0,    0,    0,    0,    0,
  392,    0,    0,    0,    0,    0,    0,    0,   69,   70,
   71,   72,   73,   74,   75,   76,   77,   78,    0,   79,
   80,   81,   82,   83,   84,   85,   86,   87,   88,   89,
    0,   90,    0,    0,   91,    0,   92,    0,  392,    0,
    8,    0,  392,    0,    0,    0,    0,    0,    0,  392,
  392,  392,    0,    0,  386,    0,    9,    0,    0,    0,
    0,    0,  392,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,  392,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   10,   11,   12,   13,   14,   15,   16,   17,
    0,    0,   18,   19,  392,  392,  392,    0,  392,    0,
    0,  392,  392,  392,  392,  392,  392,  392,  392,  392,
  392,  392,  392,  392,  392,  392,  392,    0,  392,  392,
  392,  392,  392,  392,  392,  392,  392,  392,  392,  392,
  392,  392,  392,  392,  392,  392,  392,  109,  392,  392,
  392,  392,  392,  392,  392,  392,  392,  392,    0,  392,
  392,  392,  392,  392,  392,  392,  392,  392,  392,  392,
  392,    0,    0,    0,  392,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  109,    0,    0,    0,  109,
    0,    0,    0,    0,    0,    0,  109,  109,  109,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  109,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  109,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  109,  109,  109,    0,  109,    0,    0,  109,  109,
  109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
  109,  109,  109,  109,    0,  109,  109,  109,  109,  109,
  109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
  109,  109,  109,  109,  110,  109,  109,  109,  109,  109,
  109,  109,  109,  109,  109,    0,  109,  109,  109,  109,
  109,  109,  109,  109,  109,  109,  109,  109,    0,    0,
    0,  109,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  110,    0,    0,    0,  110,    0,    0,    0,
    0,    0,    0,  110,  110,  110,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  110,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  110,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,  110,  110,
  110,    0,  110,    0,    0,  110,  110,  110,  110,    0,
  110,  110,  110,  110,  110,  110,  110,  110,  110,  110,
  110,    0,  110,  110,  110,  110,  110,  110,  110,  110,
  110,  110,  110,  110,  110,  110,  110,  110,  110,  110,
  110,  112,  110,  110,  110,  110,  110,  110,  110,  110,
  110,  110,    0,  110,  110,  110,  110,  110,  110,  110,
  110,  110,  110,  110,  110,    0,    0,    0,  110,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  112,
    0,    0,    0,  112,    0,    0,    0,    0,    0,    0,
  112,  112,  112,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  112,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  112,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  112,  112,  112,    0,  112,
    0,    0,  112,  112,  112,  112,    0,  112,  112,  112,
  112,  112,  112,  112,  112,  112,  112,  112,    0,  112,
  112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
  112,  112,  112,  112,  112,  112,  112,  112,  390,  112,
  112,  112,  112,  112,  112,  112,  112,  112,  112,    0,
  112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
  112,  112,    0,    0,    0,  112,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  390,    0,    0,    0,
  390,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  390,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  390,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  390,  390,  390,    0,  390,    0,    0,  390,
  390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
  390,  390,  390,  390,  390,    0,  390,  390,  390,  390,
  390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
  390,  390,  390,  390,  390,  109,  390,  390,  390,  390,
  390,  390,  390,  390,  390,  390,    0,  390,  390,  390,
  390,  390,  390,  390,  390,  390,  390,  390,  390,    0,
    0,    0,  390,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  109,    0,    0,    0,  109,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  109,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  109,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  109,
  109,  109,    0,  109,    0,    0,  109,  109,  109,  109,
  109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
  109,  109,    0,  109,  109,  109,  109,  109,  109,  109,
  109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
  109,  109,  376,  109,  109,  109,  109,  109,  109,  109,
  109,  109,  109,    0,  109,  109,  109,  109,  109,  109,
  109,  109,  109,  109,  109,  109,    0,    0,    0,  109,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  376,    0,    0,    0,  376,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  376,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  376,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  376,  376,  376,    0,
  376,    0,    0,  376,  376,  376,  376,  376,  376,  376,
  376,  376,  376,  376,  376,  376,  376,  376,  376,    0,
  376,  376,  376,  376,  376,  376,  376,  376,  376,  376,
  376,  376,  376,  376,  376,  376,  376,  376,  376,  377,
  376,  376,  376,  376,  376,  376,  376,  376,  376,  376,
    0,  376,  376,  376,  376,  376,  376,  376,  376,  376,
  376,  376,  376,    0,    0,    0,  376,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  377,    0,    0,
    0,  377,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  377,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  377,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  377,  377,  377,    0,  377,    0,    0,
  377,  377,  377,  377,  377,  377,  377,  377,  377,  377,
  377,  377,  377,  377,  377,  377,    0,  377,  377,  377,
  377,  377,  377,  377,  377,  377,  377,  377,  377,  377,
  377,  377,  377,  377,  377,  377,  315,  377,  377,  377,
  377,  377,  377,  377,  377,  377,  377,    0,  377,  377,
  377,  377,  377,  377,  377,  377,  377,  377,  377,  377,
    0,    0,    0,  377,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  315,    0,    0,    0,  315,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,  315,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  315,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  315,  315,  315,    0,  315,    0,    0,  315,  315,  315,
  315,  315,  315,  315,  315,  315,  315,  315,  315,  315,
  315,  315,  315,    0,  315,  315,  315,  315,  315,  315,
  315,  315,  315,  315,  315,  315,  315,  315,  315,  315,
  315,  315,  315,  321,  315,  315,  315,  315,  315,  315,
  315,  315,  315,  315,    0,    0,  315,  315,  315,  315,
  315,  315,  315,  315,  315,  315,  315,    0,    0,    0,
  315,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  321,    0,    0,    0,  321,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  321,    0,    0,    0,    0,
    0,  390,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  321,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  321,  321,  321,
    0,  321,    0,  390,  321,  321,  321,  321,  321,  321,
  321,  321,  321,  321,  321,  321,  321,  321,  321,  321,
    0,  321,  321,  321,  321,  321,  323,  321,  321,  321,
  321,  321,  321,  321,  321,  321,  321,  321,  321,  321,
    0,  321,  321,  321,  321,  321,  321,  321,  321,  321,
  321,    0,  321,  321,  321,  321,  321,  321,  321,  321,
  321,  321,  321,  321,  323,    0,    0,  321,  323,  390,
    0,    0,  390,    0,  390,    0,    0,    0,  390,  390,
  390,    0,  390,  390,  390,    0,    0,  390,  323,    0,
  390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
    0,  390,  390,  390,  323,  390,  390,  390,    0,  390,
  390,  390,  390,  390,  390,  390,  390,  390,  390,    0,
  390,  390,  390,  390,    0,    0,    0,    0,    0,    0,
  323,  323,  323,    0,  323,  109,    0,  323,  323,  323,
  323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
  323,  323,  323,    0,  323,  323,  323,  323,  323,  323,
  323,  323,  323,  323,  323,  323,  323,  323,  325,  323,
  323,  323,  323,    0,  323,  323,  323,  323,  323,  323,
  323,  323,  323,  323,    0,  323,  323,  323,  323,  323,
  323,  323,  323,  323,  323,  323,  323,    0,    0,    0,
  323,    0,    0,    0,    0,    0,  325,    0,    0,    0,
  325,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  325,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  325,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  325,  325,  325,    0,  325,    0,    0,  325,
  325,  325,  325,  325,  325,  325,  325,  325,  325,  325,
  325,  325,  325,  325,  325,    0,  325,  325,  325,  325,
  325,  325,  325,  325,  325,  325,  325,  325,  325,  325,
  325,  327,  325,  325,  325,    0,  325,  325,  325,  325,
  325,  325,  325,  325,  325,  325,    0,  325,  325,  325,
  325,  325,  325,  325,  325,  325,  325,  325,  325,    0,
    0,    0,  325,    0,    0,    0,    0,    0,    0,  327,
    0,    0,    0,  327,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  327,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  327,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  327,  327,  327,    0,  327,
    0,    0,  327,  327,  327,  327,  327,  327,  327,  327,
  327,  327,  327,  327,  327,  327,  327,  327,    0,  327,
  327,  327,  327,  327,  327,  327,  327,  327,  327,  327,
  327,  327,  322,  327,  327,  327,  327,  327,    0,  327,
  327,  327,  327,  327,  327,  327,  327,  327,  327,    0,
  327,  327,  327,  327,  327,  327,  327,  327,  327,  327,
  327,  327,    0,    0,    0,  327,    0,    0,    0,    0,
  322,    0,    0,    0,  322,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  322,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  322,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  322,  322,  322,    0,
  322,    0,    0,  322,  322,  322,  322,  322,  322,  322,
  322,  322,  322,  322,  322,  322,  322,  322,  322,    0,
  322,  322,  322,  322,  322,  324,  322,  322,  322,  322,
  322,  322,  322,  322,  322,  322,  322,  322,  322,    0,
  322,  322,  322,  322,  322,  322,  322,  322,  322,  322,
    0,  322,  322,  322,  322,  322,  322,  322,  322,  322,
  322,  322,  322,  324,    0,    0,  322,  324,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  324,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  324,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  324,
  324,  324,    0,  324,    0,    0,  324,  324,  324,  324,
  324,  324,  324,  324,  324,  324,  324,  324,  324,  324,
  324,  324,    0,  324,  324,  324,  324,  324,  324,  324,
  324,  324,  324,  324,  324,  324,  324,  326,  324,  324,
  324,  324,    0,  324,  324,  324,  324,  324,  324,  324,
  324,  324,  324,    0,  324,  324,  324,  324,  324,  324,
  324,  324,  324,  324,  324,  324,    0,    0,    0,  324,
    0,    0,    0,    0,    0,  326,    0,    0,    0,  326,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  326,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  326,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  326,  326,  326,    0,  326,    0,    0,  326,  326,
  326,  326,  326,  326,  326,  326,  326,  326,  326,  326,
  326,  326,  326,  326,    0,  326,  326,  326,  326,  326,
  326,  326,  326,  326,  326,  326,  326,  326,  326,  326,
  328,  326,  326,  326,    0,  326,  326,  326,  326,  326,
  326,  326,  326,  326,  326,    0,  326,  326,  326,  326,
  326,  326,  326,  326,  326,  326,  326,  326,    0,    0,
    0,  326,    0,    0,    0,    0,    0,    0,  328,    0,
    0,    0,  328,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  328,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,  328,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  328,  328,  328,    0,  328,    0,
    0,  328,  328,  328,  328,  328,  328,  328,  328,  328,
  328,  328,  328,  328,  328,  328,  328,    0,  328,  328,
  328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
  328,  383,  328,  328,  328,  328,  328,    0,  328,  328,
  328,  328,  328,  328,  328,  328,  328,  328,    0,  328,
  328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
  328,    0,    0,    0,  328,    0,    0,    0,    0,  383,
    0,    0,    0,  383,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  383,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  383,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  383,  383,  383,    0,  383,
    0,    0,    0,  383,  383,  383,  383,  383,  383,  383,
  383,  383,    0,  383,  383,  383,  383,  383,    0,  383,
  383,  383,  383,  383,  383,  383,  383,  383,  383,  383,
  383,  383,  383,  383,  383,  383,  383,  383,  319,  383,
  383,  383,  383,  383,  383,  383,  383,  383,  383,    0,
  383,  383,  383,  383,  383,  383,  383,  383,  383,  383,
  383,  383,    0,    0,    0,  383,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  319,    0,    0,    0,
  319,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  319,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  319,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  319,  319,  319,    0,  319,    0,    0,  319,
  319,  319,  319,  319,  319,  319,  319,  319,  319,  319,
  319,  319,  319,  319,    0,    0,  319,  319,  319,  319,
  319,  319,  329,  319,  319,  319,  319,  319,  319,  319,
  319,  319,  319,  319,  319,    0,  319,  319,  319,  319,
  319,  319,  319,  319,  319,  319,    0,  319,  319,  319,
  319,  319,  319,  319,  319,  319,  319,  319,  319,    0,
  329,    0,  319,    0,  329,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  329,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  329,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  329,  329,  329,    0,
  329,    0,    0,  329,  329,  329,  329,  329,  329,  329,
  329,  329,  329,  329,  329,  329,  329,  329,  329,    0,
  329,    0,  329,  329,    0,  329,  329,  329,  329,  329,
  329,  329,  329,  329,  329,  329,  329,  329,  329,  334,
  329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
    0,  329,  329,  329,  329,  329,  329,  329,  329,  329,
  329,  329,  329,    0,    0,    0,  329,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  334,    0,    0,
    0,  334,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  334,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  334,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  334,  334,  334,    0,  334,    0,    0,
  334,  334,  334,  334,  334,  334,  334,  334,  334,  334,
  334,  334,  334,  334,  334,  334,    0,  334,  334,  334,
  334,  334,  334,  334,  334,  334,  334,  334,  334,  334,
  334,  334,  334,  334,  340,    0,    0,  334,  334,  334,
  334,  334,  334,  334,  334,  334,  334,    0,  334,  334,
  334,  334,  334,  334,  334,  334,  334,  334,  334,  334,
    0,    0,    0,  334,    0,    0,    0,    0,    0,    0,
    0,    0,  340,    0,    0,    0,  340,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  340,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  340,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,  340,  340,
  340,    0,  340,    0,    0,  340,  340,  340,  340,  340,
  340,  340,  340,  340,  340,  340,  340,  340,  340,  340,
  340,    0,  340,  340,  340,  340,  340,  340,  340,  340,
  340,  346,    0,  340,  340,  340,  340,  340,  340,  340,
  340,    0,  340,  340,  340,  340,  340,  340,  340,  340,
  340,  340,    0,  340,  340,  340,  340,  340,  340,  340,
  340,  340,  340,  340,  340,    0,    0,    0,  340,  346,
    0,    0,    0,  346,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  346,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  346,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  346,  346,  346,    0,  346,
    0,    0,  346,  346,  346,  346,  346,  346,  346,  346,
  346,  346,  346,  346,  346,  346,  346,  346,    0,  346,
  346,  346,  346,  346,  346,  346,  346,  346,  346,  346,
  346,  346,  346,  346,  346,  346,  346,  346,  382,  346,
  346,  346,  346,  346,  346,  346,  346,  346,  346,    0,
  346,  346,    0,    0,  346,  346,  346,  346,  346,  346,
  346,  346,    0,    0,    0,  346,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  382,    0,    0,    0,
  382,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  382,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  382,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  382,  382,  382,    0,  382,    0,    0,    0,
  382,  382,  382,  382,  382,  382,  382,  382,  382,    0,
  382,  382,  382,  382,  382,    0,  382,  382,  382,  382,
  382,  382,  382,  382,  382,  382,  382,  382,  382,  382,
  382,  382,  382,  382,  382,  330,  382,  382,  382,  382,
  382,  382,  382,  382,  382,  382,    0,  382,  382,  382,
  382,  382,  382,  382,  382,  382,  382,  382,  382,    0,
    0,    0,  382,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  330,    0,    0,    0,  330,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  330,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  330,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  330,
  330,  330,    0,  330,    0,    0,  330,  330,  330,  330,
  330,  330,  330,  330,  330,  330,  330,  330,  330,  330,
  330,  330,    0,  330,    0,  330,  330,    0,  330,  330,
  330,  330,  330,  330,  330,  330,  330,  330,  330,  330,
  330,  330,  336,  330,  330,  330,  330,  330,  330,  330,
  330,  330,  330,    0,  330,  330,  330,  330,  330,  330,
  330,  330,  330,  330,  330,  330,    0,    0,    0,  330,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  336,    0,    0,    0,  336,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  336,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  336,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  336,  336,  336,    0,
  336,    0,    0,  336,  336,  336,  336,  336,  336,  336,
  336,  336,  336,  336,  336,  336,  336,  336,  336,    0,
  336,  336,  336,  336,  336,  336,  336,  336,  336,  336,
  336,  336,  336,  336,  336,  336,  336,  335,    0,    0,
  336,  336,  336,  336,  336,  336,  336,  336,  336,  336,
    0,  336,  336,  336,  336,  336,  336,  336,  336,  336,
  336,  336,  336,    0,    0,    0,  336,    0,    0,    0,
    0,    0,    0,    0,    0,  335,    0,    0,    0,  335,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  335,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  335,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  335,  335,  335,    0,  335,    0,    0,  335,  335,
  335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
  335,  335,  335,  335,    0,  335,  335,  335,  335,  335,
  335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
  335,  335,  337,    0,    0,  335,  335,  335,  335,  335,
  335,  335,  335,  335,  335,    0,  335,  335,  335,  335,
  335,  335,  335,  335,  335,  335,  335,  335,    0,    0,
    0,  335,    0,    0,    0,    0,    0,    0,    0,    0,
  337,    0,    0,    0,  337,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  337,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  337,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  337,  337,  337,    0,
  337,    0,    0,  337,  337,  337,  337,  337,  337,  337,
  337,  337,  337,  337,  337,  337,  337,  337,  337,    0,
  337,  337,  337,  337,  337,  337,  337,  337,  337,  337,
  337,  337,  337,  337,  337,  337,  337,  338,    0,    0,
  337,  337,  337,  337,  337,  337,  337,  337,  337,  337,
    0,  337,  337,  337,  337,  337,  337,  337,  337,  337,
  337,  337,  337,    0,    0,    0,  337,    0,    0,    0,
    0,    0,    0,    0,    0,  338,    0,    0,    0,  338,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  338,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  338,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  338,  338,  338,    0,  338,    0,    0,  338,  338,
  338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
  338,  338,  338,  338,    0,  338,  338,  338,  338,  338,
  338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
  338,  338,  341,    0,    0,  338,  338,  338,  338,  338,
  338,  338,  338,  338,  338,    0,  338,  338,  338,  338,
  338,  338,  338,  338,  338,  338,  338,  338,    0,    0,
    0,  338,    0,    0,    0,    0,    0,    0,    0,    0,
  341,    0,    0,    0,  341,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  341,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  341,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  341,  341,  341,    0,
  341,    0,    0,  341,  341,  341,  341,  341,  341,  341,
  341,  341,  341,  341,  341,  341,  341,  341,  341,    0,
  341,  341,  341,  341,  341,  341,  341,  341,  341,  342,
    0,  341,  341,  341,  341,  341,  341,  341,  341,    0,
  341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
    0,  341,  341,  341,  341,  341,  341,  341,  341,  341,
  341,  341,  341,    0,    0,    0,  341,  342,    0,    0,
    0,  342,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  342,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  342,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  342,  342,  342,    0,  342,    0,    0,
  342,  342,  342,  342,  342,  342,  342,  342,  342,  342,
  342,  342,  342,  342,  342,  342,    0,  342,  342,  342,
  342,  342,  342,  342,  342,  342,  347,    0,  342,  342,
  342,  342,  342,  342,  342,  342,    0,  342,  342,  342,
  342,  342,  342,  342,  342,  342,  342,    0,  342,  342,
  342,  342,  342,  342,  342,  342,  342,  342,  342,  342,
    0,    0,    0,  342,  347,    0,    0,    0,  347,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,  347,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  347,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  347,  347,  347,    0,  347,    0,    0,  347,  347,  347,
  347,  347,  347,  347,  347,  347,  347,  347,  347,  347,
  347,  347,  347,    0,  347,  347,  347,  347,  347,  347,
  347,  347,  347,  347,  347,  347,  347,  347,  347,  347,
  347,  347,  347,  348,  347,  347,  347,  347,  347,  347,
  347,  347,  347,  347,    0,  347,  347,    0,    0,  347,
  347,  347,  347,  347,  347,  347,  347,    0,    0,    0,
  347,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  348,    0,    0,    0,  348,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  348,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  348,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  348,  348,  348,
    0,  348,    0,    0,  348,  348,  348,  348,  348,  348,
  348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
    0,  348,  348,  348,  348,  348,  348,  348,  348,  348,
  348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
  349,  348,  348,  348,  348,  348,  348,  348,  348,  348,
  348,    0,  348,  348,    0,    0,  348,  348,  348,  348,
  348,  348,  348,  348,    0,    0,    0,  348,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,  349,    0,
    0,    0,  349,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  349,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,  349,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  349,  349,  349,    0,  349,    0,
    0,  349,  349,  349,  349,  349,  349,  349,  349,  349,
  349,  349,  349,  349,  349,  349,  349,    0,  349,  349,
  349,  349,  349,  349,  349,  349,  349,  349,  349,  349,
  349,  349,  349,  349,  349,  349,  349,  343,  349,  349,
  349,  349,  349,  349,  349,  349,  349,  349,    0,  349,
  349,    0,    0,  349,  349,  349,  349,  349,  349,  349,
  349,    0,    0,    0,  349,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  343,    0,    0,    0,  343,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  343,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  343,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  343,  343,  343,    0,  343,    0,    0,  343,  343,
  343,  343,  343,  343,  343,  343,  343,  343,  343,  343,
  343,  343,  343,  343,    0,  343,  343,  343,  343,  343,
  343,  343,  343,  343,  343,  343,  344,    0,  343,  343,
  343,    0,  343,  343,    0,  343,  343,  343,  343,  343,
  343,  343,  343,  343,  343,    0,  343,  343,  343,  343,
  343,  343,  343,  343,  343,  343,  343,  343,    0,    0,
    0,  343,    0,    0,  344,    0,    0,    0,  344,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,  344,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  344,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  344,  344,  344,    0,  344,    0,    0,  344,  344,  344,
  344,  344,  344,  344,  344,  344,  344,  344,  344,  344,
  344,  344,  344,    0,  344,  344,  344,  344,  344,  344,
  344,  344,  344,  344,  344,  345,    0,  344,  344,  344,
    0,  344,  344,    0,  344,  344,  344,  344,  344,  344,
  344,  344,  344,  344,    0,  344,  344,  344,  344,  344,
  344,  344,  344,  344,  344,  344,  344,    0,    0,    0,
  344,    0,    0,  345,    0,    0,    0,  345,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  345,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  345,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  345,
  345,  345,    0,  345,    0,    0,  345,  345,  345,  345,
  345,  345,  345,  345,  345,  345,  345,  345,  345,  345,
  345,  345,    0,  345,  345,  345,  345,  345,  345,  345,
  345,  345,  345,  345,  331,    0,  345,  345,  345,    0,
  345,  345,    0,  345,  345,  345,  345,  345,  345,  345,
  345,  345,  345,    0,  345,  345,  345,  345,  345,  345,
  345,  345,  345,  345,  345,  345,    0,    0,    0,  345,
    0,    0,  331,    0,    0,    0,  331,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  331,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  331,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,  331,  331,
  331,    0,    0,    0,    0,  331,  331,  331,  331,  331,
  331,  331,  331,  331,  331,  331,    0,    0,  331,  331,
  331,    0,  331,  331,    0,    0,  331,  331,  331,  331,
  331,  331,  331,  331,  331,  331,  331,  331,  331,  331,
  331,  332,  331,  331,  331,  331,  331,  331,  331,  331,
  331,  331,    0,  331,  331,  331,  331,  331,  331,  331,
  331,  331,  331,  331,  331,    0,    0,    0,  331,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  332,
    0,    0,    0,  332,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  332,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  332,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  332,  332,  332,    0,    0,
    0,    0,  332,  332,  332,  332,  332,  332,  332,  332,
  332,  332,  332,    0,    0,  332,  332,  332,    0,  332,
  332,    0,    0,  332,  332,  332,  332,  332,  332,  332,
  332,  332,  332,  332,  332,  332,  332,  332,  333,  332,
  332,  332,  332,  332,  332,  332,  332,  332,  332,    0,
  332,  332,  332,  332,  332,  332,  332,  332,  332,  332,
  332,  332,    0,    0,    0,  332,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  333,    0,    0,    0,
  333,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  333,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  333,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  333,  333,  333,    0,    0,    0,    0,  333,
  333,  333,  333,  333,  333,  333,  333,  333,  333,  333,
    0,    0,  333,  333,  333,    0,  333,  333,    0,    0,
  333,  333,  333,  333,  333,  333,  333,  333,  333,  333,
  333,  333,  333,  333,  333,  355,  333,  333,  333,  333,
  333,  333,  333,  333,  333,  333,    0,  333,  333,  333,
  333,  333,  333,  333,  333,  333,  333,  333,  333,    0,
    0,    0,  333,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  355,    0,    0,    0,  355,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  355,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  355,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  355,
  355,  355,    0,  355,    0,    0,    0,  355,    0,  355,
    0,  355,  355,  355,    0,  355,  355,  355,  355,  355,
  355,  355,    0,  355,  355,  355,  355,  355,  355,  355,
  353,    0,  355,  355,  355,  355,  355,  355,  355,  355,
  355,  355,    0,  355,  355,  355,  355,  355,  355,  355,
  355,  355,  355,    0,  355,    0,  355,  355,  355,  355,
  355,  355,  355,  355,  355,  355,    0,    0,  353,  355,
    0,    0,  353,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  353,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,  353,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  353,  353,  353,    0,  353,    0,
    0,  353,  353,  353,  353,  353,  353,  353,  353,  353,
  353,    0,  353,  353,  353,  353,  353,    0,  353,  353,
  353,  353,  353,  353,  353,  353,  353,  353,  353,  353,
  353,  353,  353,  353,  353,  353,  353,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  353,
  353,  353,  353,  353,  353,  353,  353,  353,  353,  353,
  353,  188,    0,    0,  353,    0,    3,  189,  190,  191,
  192,    0,    0,   43,   44,    0,    0,    0,    0,    0,
    0,    0,   45,    0,   46,   47,   48,   49,   50,   51,
   52,   53,   54,   55,   56,   57,   58,   59,   60,  193,
   62,   63,   64,   65,   66,   67,    0,  194,    6,  195,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    7,    0,    0,   69,   70,   71,   72,
   73,   74,   75,   76,   77,   78,    0,   79,   80,   81,
   82,   83,   84,   85,   86,   87,   88,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,  264,    0,
    0,   89,  165,   90,    0,    0,    0,    0,   92,    0,
    0,  188,    8,    0,    0,  319,    3,  189,  190,  191,
  192,    0,    0,   43,   44,    0,  166,    0,    9,    0,
  167,    0,   45,    0,   46,   47,   48,   49,   50,   51,
   52,   53,   54,   55,   56,   57,   58,   59,   60,  193,
   62,   63,   64,   65,   66,   67,    0,  194,    6,  195,
    0,   19,    0,    0,   10,   11,   12,   13,   14,   15,
   16,   17,    0,    7,   18,   19,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   89,    0,   90,    0,    0,    0,    0,   92,    0,
    0,  188,    8,    0,    0,  347,    3,  189,  190,  191,
  192,    0,    0,   43,   44,    0,    0,    0,    9,    0,
    0,    0,   45,    0,   46,   47,   48,   49,   50,   51,
   52,   53,   54,   55,   56,   57,   58,   59,   60,  193,
   62,   63,   64,   65,   66,   67,    0,  194,    6,  195,
    0,    0,    0,    0,   10,   11,   12,   13,   14,   15,
   16,   17,    0,    7,   18,   19,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   89,    0,   90,    0,    0,    0,    0,   92,    0,
    0,  188,    8,    0,    0,  352,    3,  189,  190,  191,
  192,    0,    0,   43,   44,    0,    0,    0,    9,    0,
    0,    0,   45,    0,   46,   47,   48,   49,   50,   51,
   52,   53,   54,   55,   56,   57,   58,   59,   60,  193,
   62,   63,   64,   65,   66,   67,    0,  194,    6,  195,
    0,    0,    0,    0,   10,   11,   12,   13,   14,   15,
   16,   17,    0,    7,   18,   19,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   89,    0,   90,    0,    0,    0,    0,   92,    0,
    0,  188,    8,    0,    0,  453,    3,  189,  190,  191,
  192,    0,    0,   43,   44,    0,    0,    0,    9,    0,
    0,    0,   45,    0,   46,   47,   48,   49,   50,   51,
   52,   53,   54,   55,   56,   57,   58,   59,   60,  193,
   62,   63,   64,   65,   66,   67,    0,  194,    6,  195,
    0,    0,    0,    0,   10,   11,   12,   13,   14,   15,
   16,   17,    0,    7,   18,   19,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   89,    0,   90,    0,    0,    0,    0,   92,    0,
   25,    0,    8,    0,    0,   25,   25,   25,   25,   25,
    0,    0,   25,   25,    0,    0,    0,    0,    9,    0,
    0,   25,    0,   25,   25,   25,   25,   25,   25,   25,
   25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
   25,   25,   25,   25,   25,    0,   25,   25,   25,    0,
    0,    0,    0,    0,   10,   11,   12,   13,   14,   15,
   16,   17,   25,    0,   18,   19,    0,    0,    0,    0,
    0,  208,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   46,   47,   48,   49,   50,   51,
   25,    0,   25,    0,    0,    0,    0,   25,    0,    4,
    0,   25,    0,    0,   25,    0,    0,    0,    0,    0,
    0,    0,    0,  209,    0,    0,    0,   25,  210,  211,
  212,  213,    0,    7,  214,    0,  215,  216,  217,  218,
    0,    0,  219,  220,  221,    0,    0,    0,    0,  112,
    0,  376,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   25,   25,   25,   25,   25,   25,   25,
   25,    0,    0,    0,   25,  113,  114,  115,    0,    0,
    0,    0,  116,    0,  149,    0,    0,    0,  224,    4,
    0,    0,    0,    0,    0,  117,  118,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  119,  120,    0,  121,
  122,    0,  123,    7,    0,    0,    0,    0,    0,    0,
    0,    0,  457,    0,    0,    0,    0,    0,    0,  112,
    0,    0,    0,    0,   10,   11,   12,   13,   14,   15,
   16,   17,    0,    0,   18,  226,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  113,  114,  115,    0,    0,
    4,    0,  116,    0,    0,    0,    0,    0,  377,    0,
    0,    0,    0,    0,    0,  117,  118,    0,    0,    0,
    0,    0,    0,    0,    7,    0,  119,  120,    0,  121,
  122,    0,  123,  105,    0,    0,    0,    0,    0,    0,
  112,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   10,   11,   12,   13,   14,   15,
   16,   17,    0,    0,    0,   19,  113,  114,  115,    0,
    0,  105,    0,  116,    0,  105,    0,    0,    0,    0,
    0,    0,  105,  105,  105,    0,  117,  118,    0,    0,
    0,    0,    0,    0,    0,  105,    0,  119,  120,    0,
  121,  122,    0,  123,    0,    0,    0,    0,    0,    0,
    0,  105,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   10,   11,   12,   13,   14,
   15,   16,   17,    0,    0,    0,   19,  105,  105,  105,
    0,  105,    0,    0,  105,  105,  105,  105,    0,  105,
  105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
    0,  105,  105,  105,  105,  105,  105,  105,  105,  105,
  105,  105,  111,  105,  105,  105,    0,  105,  105,  105,
    0,  105,  105,  105,  105,  105,  105,  105,  105,  105,
  105,    0,  105,  105,  105,  105,  105,  105,  105,  105,
  105,  105,  105,  105,    0,    0,    0,    0,    0,    0,
  111,    0,    0,    0,  111,    0,    0,    0,    0,    0,
    0,  111,  111,  111,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  111,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  111,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  111,  111,  111,    0,
  111,    0,    0,  111,  111,  111,  111,    0,  111,  111,
  111,  111,  111,  111,  111,  111,  111,  111,  111,    0,
  111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
  111,    0,  111,  111,  111,    0,  111,  111,  111,    0,
  111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
    0,  111,  111,  111,  111,  111,  111,  111,  111,  111,
  111,  111,  111,  189,  349,  191,  192,    0,    0,   43,
   44,    0,    0,    0,    0,    0,    0,    0,   45,    0,
   46,   47,   48,   49,   50,   51,   52,   53,   54,   55,
   56,   57,   58,   59,   60,   61,   62,   63,   64,   65,
   66,   67,    0,   68,    0,  195,  384,  385,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   69,   70,   71,   72,
   73,   74,   75,   76,   77,   78,    0,   79,   80,   81,
   82,   83,   84,   85,   86,   87,   88,   89,    0,   90,
    0,    0,   91,    0,   92,    0,  155,  155,  155,  155,
    0,    0,  155,  155,    0,    0,    0,    0,    0,    0,
    0,  155,  386,  155,  155,  155,  155,  155,  155,  155,
  155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
  155,  155,  155,  155,  155,    0,  155,    0,  155,  155,
  155,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   19,    0,    0,    0,    0,    0,    0,    0,  155,
  155,  155,  155,  155,  155,  155,  155,  155,  155,    0,
  155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
  155,    0,  155,    0,    0,  155,    0,  155,    0,  189,
  349,  191,  192,    0,    0,   43,   44,    0,    0,    0,
    0,    0,    0,    0,   45,  155,   46,   47,   48,   49,
   50,   51,   52,   53,   54,   55,   56,   57,   58,   59,
   60,   61,   62,   63,   64,   65,   66,   67,    0,   68,
    0,  195,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  155,    0,    0,    0,    0,    0,
    0,    0,   69,   70,   71,   72,   73,   74,   75,   76,
   77,   78,    0,   79,   80,   81,   82,   83,   84,   85,
   86,   87,   88,   89,    0,   90,    0,    0,   91,    0,
   92,  160,  160,  160,  160,    0,    0,  160,  160,    0,
    0,    0,    0,    0,    0,    0,  160,    0,  160,  160,
  160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
  160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
    0,  160,    0,  160,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   19,    0,    0,
    0,    0,    0,    0,  160,  160,  160,  160,  160,  160,
  160,  160,  160,  160,    0,  160,  160,  160,  160,  160,
  160,  160,  160,  160,  160,  160,    0,  160,    0,    0,
  160,    0,  160,  155,  155,  155,  155,    0,    0,  155,
  155,    0,    0,    0,    0,    0,    0,    0,  155,    0,
  155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
  155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
  155,  155,    0,  155,    0,  155,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  160,
    0,    0,    0,    0,    0,    0,  155,  155,  155,  155,
  155,  155,  155,  155,  155,  155,    0,  155,  155,  155,
  155,  155,  155,  155,  155,  155,  155,  155,    0,  155,
    0,    0,  155,    0,  155,    0,   43,   44,    0,    0,
    0,    0,    0,    0,    0,   45,    0,   46,   47,   48,
   49,   50,   51,   52,   53,   54,   55,   56,   57,   58,
   59,   60,  193,   62,   63,   64,   65,   66,   67,    0,
   68,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    7,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  155,  112,   69,   70,   71,   72,   73,   74,   75,
   76,   77,   78,    0,   79,   80,   81,   82,   83,   84,
   85,   86,   87,   88,   89,    0,   90,    0,  113,  222,
  115,   92,    0,    0,    0,  116,    0,    0,    0,    0,
    0,  479,    0,    0,    0,    0,    0,    0,  117,  118,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  119,
  120,    0,  121,  122,    0,  123,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   10,   11,   12,
   13,   14,   15,   16,   17,   43,   44,    0,   19,    0,
    0,    0,    0,    0,   45,    0,   46,   47,   48,   49,
   50,   51,   52,   53,   54,   55,   56,   57,   58,   59,
   60,  193,   62,   63,   64,   65,   66,   67,    0,   68,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    7,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  112,   69,   70,   71,   72,   73,   74,   75,   76,
   77,   78,    0,   79,   80,   81,   82,   83,   84,   85,
   86,   87,   88,   89,    0,   90,    0,  113,  222,  115,
   92,    0,    0,    0,  116,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  117,  118,    0,
    0,    0,    0,    0,    0,    0,    0,    0,  119,  120,
    0,  121,  122,    0,  123,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   10,   11,   12,   13,
   14,   15,   16,   17,   43,   44,    0,   19,    0,    0,
    0,    0,    0,   45,    0,   46,   47,   48,   49,   50,
   51,   52,   53,   54,   55,   56,   57,   58,   59,   60,
  193,   62,   63,   64,   65,   66,   67,    0,   68,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    7,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  112,   69,   70,   71,   72,   73,   74,   75,   76,   77,
   78,    0,   79,   80,   81,   82,   83,   84,   85,   86,
   87,   88,   89,    0,   90,    0,  113,  222,  115,   92,
    0,    0,    0,    8,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  117,  118,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  119,  120,    0,
  121,  122,    0,  123,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   10,   11,   12,   13,   14,
   15,   16,   17,   43,   44,    0,   19,    0,    0,    0,
    0,    0,   45,    0,   46,   47,   48,   49,   50,   51,
   52,   53,   54,   55,   56,   57,   58,   59,   60,   61,
   62,   63,   64,   65,   66,   67,    0,   68,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
   69,   70,   71,   72,   73,   74,   75,   76,   77,   78,
    0,   79,   80,   81,   82,   83,   84,   85,   86,   87,
   88,   89,    0,   90,    0,    0,   91,    0,   92,   43,
   44,    0,   93,    0,    0,    0,    0,    0,   45,    0,
   46,   47,   48,   49,   50,   51,   52,   53,   54,   55,
   56,   57,   58,   59,   60,   61,   62,   63,   64,   65,
   66,   67,    0,   68,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   19,   69,   70,   71,   72,
   73,   74,   75,   76,   77,   78,    0,   79,   80,   81,
   82,   83,   84,   85,   86,   87,   88,   89,    0,   90,
    0,    0,   91,    0,   92,   43,   44,    0,    0,  612,
    0,    0,    0,    0,   45,    0,   46,   47,   48,   49,
   50,   51,   52,   53,   54,   55,   56,   57,   58,   59,
   60,   61,   62,   63,   64,   65,   66,   67,    0,   68,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   19,   69,   70,   71,   72,   73,   74,   75,   76,
   77,   78,    0,   79,   80,   81,   82,   83,   84,   85,
   86,   87,   88,   89,    0,   90,    0,    0,   91,    0,
   92,   43,   44,    0,    0,  664,    0,    0,    0,    0,
   45,    0,   46,   47,   48,   49,   50,   51,   52,   53,
   54,   55,   56,   57,   58,   59,   60,   61,   62,   63,
   64,   65,   66,   67,    0,   68,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   19,   69,   70,
   71,   72,   73,   74,   75,   76,   77,   78,    0,   79,
   80,   81,   82,   83,   84,   85,   86,   87,   88,   89,
    0,   90,    0,    0,   91,    0,   92,   43,   44,    0,
    0,  667,    0,    0,    0,    0,   45,    0,   46,   47,
   48,   49,   50,   51,   52,   53,   54,   55,   56,   57,
   58,   59,   60,   61,   62,   63,   64,   65,   66,   67,
    0,   68,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   19,   69,   70,   71,   72,   73,   74,
   75,   76,   77,   78,    0,   79,   80,   81,   82,   83,
   84,   85,   86,   87,   88,   89,    0,   90,    0,    0,
   91,    0,   92,  165,  168,    0,    0,    0,    0,    0,
    0,    0,  171,    0,  174,  177,  180,  183,  186,  189,
  192,  195,  198,  201,  204,  207,  210,  213,  216,  219,
  222,  225,  228,  231,  234,  237,    0,  240,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   19,
  243,  246,  249,  252,  255,  258,  261,  264,  267,  270,
    0,  273,  276,  279,  282,  285,  288,  291,  294,  297,
  300,  303,    0,  306,  321,  324,  309,    0,  312,    0,
    0,    0,    0,  327,    0,  330,  333,  336,  339,  342,
  345,  348,  351,  354,  357,  360,  363,  366,  369,  372,
  375,  379,  382,  385,  388,  391,  394,    0,  397,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  400,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  315,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  404,    0,  407,    0,    0,    0,    0,  410,
    0,    0,    0,  400,    0,    0,  400,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  243,    8,    8,    0,
    0,    8,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  400,  400,  400,  400,  400,
  400,  400,  400,    8,    0,  413,  400,    0,  243,    0,
    0,    0,    0,  243,  243,  243,  243,  494,    0,  243,
    0,  243,  243,  243,  243,    0,    0,  243,  243,  243,
    0,    0,    0,    0,  243,  243,  243,  243,  243,  243,
  243,  243,  243,  243,  243,    0,  243,  243,  243,  243,
  243,  243,  243,  243,  243,  243,    0,  495,    0,    0,
  243,  243,  243,    0,    0,    0,    0,    0,    0,  243,
    0,    0,    0,  243,    0,    0,    0,    0,    0,    0,
  243,  243,    0,    8,    0,    0,    0,    0,    0,    0,
    0,  243,  243,    0,  243,  243,    0,  243,    0,    0,
  496,  497,  498,  499,  500,  501,    0,    0,  502,  503,
  504,  505,  506,  507,  508,  509,  510,  511,  512,  513,
  514,  515,  516,  517,  518,  519,    4,  520,  521,  522,
  523,  524,  525,  526,  527,  528,  529,    0,    0,  530,
  531,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    7,    0,    0,  532,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  112,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  113,  114,  115,    0,    0,  311,    0,  116,
    0,    0,    0,    0,    0,  445,    0,    0,  558,    0,
    0,    0,  117,  118,    0,    0,  446,    0,    0,    0,
    0,  311,    0,  119,  120,    0,  121,  122,    0,  123,
    0,    0,    0,    0,    0,    0,    0,  311,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   10,   11,   12,   13,   14,   15,   16,   17,    0,
    0,    0,   19,  311,  311,  311,    0,    0,    4,    0,
  311,    0,    0,    0,    0,    0,  311,    0,    0,  311,
    0,    0,    0,  311,  311,    0,    0,  311,    0,    0,
    0,    0,    7,    0,  311,  311,    0,  311,  311,    0,
  311,    0,    0,    0,    0,    0,    0,    0,  112,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  311,  311,  311,  311,  311,  311,  311,  311,
    0,    0,    0,  311,  113,  114,  115,    0,    0,    4,
    0,  116,  308,    0,    0,    0,    0,    0,    0,    0,
  309,    0,    0,    0,  117,  118,    0,    0,    0,    0,
    0,    0,    0,    7,    0,  119,  120,    0,  121,  122,
    0,  123,    0,    0,    0,    0,    0,    0,    0,  112,
    0,    0,    0,    0,    0,    0,    0,    4,    0,    0,
    0,    0,    0,   10,   11,   12,   13,   14,   15,   16,
   17,    0,    0,    0,   19,  113,  114,  115,    0,    0,
    0,    7,  116,    0,    0,    0,    0,    0,  445,    0,
    0,    0,    0,    0,    0,  117,  118,  112,    0,  446,
    0,    0,    0,    0,    0,    0,  119,  120,    0,  121,
  122,    0,  123,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  113,  114,  115,    0,    0,    4,    0,
  116,    0,  337,  620,   10,   11,   12,   13,   14,   15,
   16,   17,    0,  117,  118,   19,    0,    0,    0,    0,
    0,    0,    7,    0,  119,  120,    0,  121,  122,    0,
  123,    0,    0,    0,    0,    0,    0,    0,  112,    0,
    0,    0,    0,    0,    0,    0,    4,    0,    0,    0,
    0,    0,   10,   11,   12,   13,   14,   15,   16,   17,
    0,    0,    0,   19,  113,  114,  115,    0,    0,    0,
    7,  116,    0,    0,    0,    0,  321,    0,    0,    0,
    0,    0,    0,    0,  117,  118,  112,    0,    0,    0,
    0,    0,    0,    0,    0,  119,  120,    0,  121,  122,
    0,  123,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  113,  114,  115,    0,    0,    4,    0,  116,
  335,    0,    0,   10,   11,   12,   13,   14,   15,   16,
   17,    0,  117,  118,   19,    0,    0,    0,    0,    0,
    0,    7,    0,  119,  120,    0,  121,  122,    0,  123,
    0,    0,    0,    0,    0,    0,    0,  112,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   10,   11,   12,   13,   14,   15,   16,   17,    0,
    0,    0,   19,  113,  114,  115,    0,    0,    4,    0,
  116,    0,  337,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  117,  118,    0,    0,    0,    0,    0,
    0,    0,    7,    0,  119,  120,    0,  121,  122,    0,
  123,    0,    0,    0,    0,    0,    0,    0,  112,    0,
    0,    0,    0,    0,    0,    0,    4,    0,    0,    0,
    0,    0,   10,   11,   12,   13,   14,   15,   16,   17,
    0,    0,    0,   19,  113,  114,  115,    0,    0,    0,
    7,  116,    0,    0,    0,    0,    0,  374,    0,    0,
    0,    0,    0,    0,  117,  118,  112,    0,    0,    0,
    0,    0,    0,    0,    0,  119,  120,    0,  121,  122,
    0,  123,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  113,  114,  115,    0,    0,    4,    0,  116,
  463,    0,    0,   10,   11,   12,   13,   14,   15,   16,
   17,    0,  117,  118,   19,    0,    0,    0,    0,    0,
    0,    7,    0,  119,  120,    0,  121,  122,    0,  123,
    0,    0,    0,    0,    0,    0,    0,  112,    0,    0,
    0,    0,    0,    0,    0,    4,    0,    0,    0,    0,
    0,   10,   11,   12,   13,   14,   15,   16,   17,    0,
    0,    0,   19,  113,  114,  115,    0,    0,    0,    7,
  116,    0,    0,    0,    0,    0,  588,    0,    0,    0,
    0,    0,    0,  117,  118,  112,    0,    0,    0,    0,
    0,    0,    0,    0,  119,  120,    0,  121,  122,    0,
  123,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  113,  114,  115,    0,    0,    4,    0,  116,  648,
    0,    0,   10,   11,   12,   13,   14,   15,   16,   17,
    0,  117,  118,   19,    0,    0,    0,    0,    0,    0,
    7,    0,  119,  120,    0,  121,  122,    0,  123,    0,
    0,    0,    0,    0,    0,    0,  112,    0,    0,    0,
    0,    0,    0,    0,    4,    0,    0,    0,    0,    0,
   10,   11,   12,   13,   14,   15,   16,   17,    0,    0,
    0,   19,  113,  114,  115,    0,    0,    0,    7,  116,
    0,    0,    0,    0,    0,  653,    0,    0,    0,    0,
    0,    0,  117,  118,  112,    0,    0,    0,    0,    0,
    0,    0,    0,  119,  120,    0,  121,  122,    0,  123,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  113,  114,  115,    0,    0,    4,    0,  116,  700,    0,
    0,   10,   11,   12,   13,   14,   15,   16,   17,    0,
  117,  118,   19,    0,    0,    0,    0,    0,    0,    7,
    0,  119,  120,    0,  121,  122,    0,  123,    0,    0,
    0,    0,    0,    0,    0,  112,    0,    0,    0,    0,
    0,    0,    0,    4,    0,    0,    0,    0,    0,   10,
   11,   12,   13,   14,   15,   16,   17,    0,    0,    0,
   19,  113,  114,  115,    0,    0,    0,    7,  116,  703,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  117,  118,  112,    0,    0,    0,    0,    0,    0,
    0,    0,  119,  120,    0,  121,  122,    0,  123,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  113,
  114,  115,    0,    0,    4,    0,  116,  747,    0,    0,
   10,   11,   12,   13,   14,   15,   16,   17,    0,  117,
  118,   19,    0,    0,    0,    0,    0,    0,    7,    0,
  119,  120,    0,  121,  122,    0,  123,    0,    0,    0,
    0,    0,    0,    0,  112,    0,    0,    0,    0,    0,
    0,    0,    4,    0,    0,    0,    0,    0,   10,   11,
   12,   13,   14,   15,   16,   17,    0,    0,    0,   19,
  113,  114,  115,    0,    0,    0,    7,  116,  782,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  117,  118,  112,    0,    0,    0,    0,    0,    0,    0,
    0,  119,  120,    4,  121,  122,    0,  123,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,  113,  114,
  115,    0,    0,    0,    0,  116,    0,    7,    0,   10,
   11,   12,   13,   14,   15,   16,   17,    0,  117,  118,
   19,    0,    0,  112,    0,    0,    0,    0,    0,  119,
  120,    0,  121,  122,    0,  123,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  113,
  114,  115,    0,    0,    0,    0,    8,   10,   11,   12,
   13,   14,   15,   16,   17,    0,    0,    0,   19,  117,
  118,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  119,  120,    0,  121,  122,    0,  123,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,   10,   11,
   12,   13,   14,   15,   16,   17,    0,    0,    0,   19,
  189,  349,  191,  192,    0,    0,   43,   44,    0,    0,
    0,    0,    0,    0,    0,   45,    0,   46,   47,   48,
   49,   50,   51,   52,   53,   54,   55,   56,   57,   58,
   59,   60,   61,   62,   63,   64,   65,   66,   67,    0,
   68,    0,  195,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   28,    0,    0,   28,    0,   28,
    0,   28,    0,   28,   89,   28,   90,   28,   28,   28,
    0,   92,   28,   28,    0,   28,   28,   28,   28,   28,
   28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
   28,   28,   28,    0,   28,   28,   28,   28,   28,   28,
   28,   28,   28,   28,  355,   28,   28,   28,   28,    0,
    0,    0,    0,    0,    0,    0,    0,  355,  355,  355,
   28,    0,  355,    0,    0,  355,  355,  355,  355,  355,
  355,    0,    0,  355,  355,  355,  355,  355,  355,  355,
  355,  355,  355,    0,  355,  355,  355,  355,  355,  355,
  355,  355,  355,  355,    0,  355,    0,  355,  355,
};
static int yycheck[] = {                                     216,
    0,   93,  236,    0,  392,    4,    0,  371,   95,  112,
  337,  100,   95,  256,    0,  204,  256,  271,  256,  256,
  269,   21,  259,    9,  232,  232,   91,   21,  105,  106,
  327,  306,  109,  199,  256,   21,  269,  465,  256,  142,
  206,  470,  231,  106,  568,  550,  279,  280,  281,  282,
  283,  284,  305,  306,  307,  256,  148,  256,  150,  279,
  280,  281,  282,  283,  284,  256,  256,  298,  368,  391,
  256,  371,  571,  305,  306,  307,  367,   98,  400,  313,
  369,  373,  374,  172,  373,  177,  377,  164,  373,  262,
  263,  264,  265,  182,  183,  395,  373,  256,  367,  399,
  298,  164,  626,  256,  103,  105,  106,  172,  613,  109,
  109,  105,  106,    0,  383,  109,  256,  116,   30,  105,
  106,  204,  199,  109,  266,  267,  369,  369,  381,  206,
  373,  304,  305,  306,   21,  367,  635,  368,  267,  371,
  267,  569,  373,  572,  231,  430,  368,  267,  231,  381,
  149,  228,  374,  430,  320,  430,  374,  222,  682,  456,
  267,  369,  369,  395,  164,  186,  267,  399,  367,  423,
  164,  372,  382,  374,  267,  373,  367,  430,  164,  369,
  390,  430,  368,  423,  683,  369,  403,  430,  374,    2,
    3,    4,  430,  430,  193,  583,  710,  430,  430,  199,
  303,  304,  391,  100,  383,  199,  206,  636,  381,  368,
  430,  640,  206,  199,  367,  374,  369,  309,  266,  267,
  206,  267,  109,  373,  298,  225,   39,  369,  368,  141,
  594,  651,  144,  653,  374,  562,  373,  236,  752,  225,
  369,  298,  369,  320,  632,  374,  383,  374,  395,  369,
  325,  326,  344,  342,  374,  684,  685,  369,  664,  369,
  371,  667,  369,  373,  263,  264,  265,  374,  369,  675,
  109,  368,  384,  374,  384,  172,  369,  374,   91,  371,
  430,  374,   95,  430,  395,  705,  183,  100,  399,  369,
  103,  373,  291,  373,  368,  370,  109,  209,  210,  373,
  374,  371,  690,  116,  391,    8,  694,  736,  391,  221,
  149,  368,  718,  369,  313,  721,  373,  420,  369,  430,
  320,  369,  608,  369,  610,  395,  320,  383,  374,  399,
  325,  326,  383,  367,  320,  369,  149,  371,  373,  152,
  769,  375,  155,  325,  326,  733,  430,  735,  260,  368,
  286,  287,  305,  306,  307,  374,  448,  391,  392,  172,
  430,  262,  263,  264,  265,  301,  369,  369,  585,  586,
  183,  373,  371,  370,  367,  370,  367,  373,  374,  367,
  193,  384,  416,  373,  377,  773,  377,  383,  370,  368,
   93,  308,  392,  383,  369,  374,  313,  369,  786,  374,
  105,  106,  374,  304,  109,  108,  392,  369,  294,  222,
  395,  396,  225,  116,  369,  400,  369,  367,  231,  374,
  373,  364,  375,  236,  395,  396,  364,  368,  381,  400,
  370,  648,  318,  370,  374,  378,  379,  374,  391,  392,
  378,  379,  395,  386,  387,  148,  399,  150,  386,  387,
  263,  264,  265,  395,  396,  369,  548,  367,  400,  164,
  374,  369,  165,  416,  464,  367,  374,  369,  383,  371,
  470,  373,  370,  375,  177,  178,  374,  430,  291,  696,
  368,  367,  699,  700,  470,  702,  703,  369,  423,  391,
  392,  370,  374,  405,  199,  374,  273,  274,  275,  276,
  313,  206,  594,  367,  370,  369,  369,  371,  374,  373,
  373,  375,  330,  331,  416,  370,  219,  220,  370,  374,
  225,  755,  374,  228,  429,  430,  743,  391,  392,  746,
  747,  373,  374,  419,  420,  421,  422,  423,  424,  425,
  426,  364,  385,  367,  430,  388,  545,  371,  292,  293,
  294,  295,  416,  257,  258,  378,  379,  261,  371,  385,
  777,  264,  388,  386,  387,  300,  301,  302,  568,  373,
  374,  430,  572,  386,  430,  487,  401,  402,  391,  392,
  283,  393,  394,  583,  417,  418,  572,  400,  393,  394,
  294,  401,  402,  401,  402,  594,  367,  583,  302,  303,
  367,  430,  369,  373,  371,  367,  309,  367,  375,  608,
  367,  610,  401,  402,  318,  320,  401,  402,  393,  394,
  417,  418,  417,  418,  391,  392,  626,  109,  384,  417,
  418,  334,  632,  373,  337,  373,  636,  289,  290,  430,
  640,  344,  296,  297,  370,  368,  632,  298,  299,  416,
  636,  372,  430,  373,  640,  468,  469,  470,  430,  373,
  373,  430,  373,  367,  367,  368,  321,  149,  371,  384,
  373,  373,  373,  765,  373,  384,  383,  676,  384,  383,
  367,  400,  682,  374,  684,  685,  368,  392,  368,  368,
  690,  368,  368,  430,  694,  384,  368,  609,  684,  685,
  612,  368,  367,  369,  690,  368,  367,  377,  694,  367,
  370,  710,  368,  377,  373,  419,  420,  421,  422,  423,
  424,  425,  426,  369,  373,  429,  430,  540,  369,  429,
  423,  373,  545,  733,  216,  735,  736,  369,  430,  368,
  430,  368,  368,  225,  368,  448,  374,  733,  373,  735,
  736,  373,  664,  752,  236,  667,  755,  570,  571,  572,
  573,  673,  368,  675,  577,  470,  368,  580,  384,  769,
  583,  374,  368,  773,  384,  370,  479,  430,  367,  400,
  374,  594,  367,  769,  429,  373,  786,  773,  389,  398,
  397,  399,  415,  371,  429,  608,  373,  610,  429,  370,
  786,  713,  371,  389,  397,  717,  718,  398,  720,  721,
  429,  367,    0,  320,  109,  727,  399,   21,  625,  632,
  570,  634,  635,  636,  637,  638,  637,  640,  641,  660,
  183,  313,  112,  400,  766,  641,  676,  709,  709,  119,
  120,  594,  270,  448,  488,  548,  282,  557,  488,  761,
  284,  286,  764,  285,  287,  664,  104,  670,  667,  562,
   -1,  288,  142,  676,  673,   -1,  675,  572,   -1,   -1,
  683,  684,  685,   -1,   -1,   -1,   -1,  690,  583,   -1,
   -1,  694,   -1,   -1,  587,  588,   -1,  590,  591,   -1,
   -1,  594,   -1,   -1,   -1,   -1,   -1,  710,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  717,  718,
  392,  720,  721,   -1,   -1,   -1,   -1,   -1,  727,  622,
  733,  403,  735,  736,   -1,   -1,   -1,  632,   -1,   -1,
   -1,  636,   -1,   -1,  377,  640,   -1,   -1,   -1,  752,
   -1,   -1,  755,   -1,   -1,   -1,   -1,   -1,  651,   -1,
  653,   -1,  761,  766,   -1,  764,  769,   -1,   -1,   -1,
  773,  404,  405,  406,  407,  408,  409,  410,  411,  412,
  413,   -1,   -1,  786,   -1,   -1,   -1,   -1,   -1,  684,
  685,   -1,   -1,  263,   -1,  690,  468,  469,  470,  694,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  705,  706,  284,  285,  286,  287,  288,  289,
  290,   -1,  292,  293,  294,  295,  296,  297,  298,  299,
  300,  301,  302,  303,  304,   -1,   -1,   -1,  733,   -1,
  735,  736,   -1,   -1,   -1,   -1,  335,  336,  337,  338,
  339,  340,  341,  342,  343,  344,   -1,  346,  347,  348,
  349,  350,  351,  352,  353,  354,  355,   -1,   -1,   -1,
   -1,   -1,  765,   -1,  769,   -1,   -1,   -1,  773,  257,
  258,   -1,  371,  261,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  786,   -1,   -1,   -1,   -1,   -1,   -1,  570,  571,
  572,  573,   -1,   -1,   -1,   -1,  395,   -1,   -1,   -1,
  399,  583,   -1,  585,  586,   -1,  294,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  302,  303,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  318,  430,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  420,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  632,   -1,   -1,  635,  636,  637,   -1,   -1,  640,  641,
   -1,   -1,   -1,   -1,   -1,   -1,  648,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  367,
   -1,   -1,  370,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  383,   -1,   -1,   -1,   -1,
   -1,  683,  684,  685,   -1,   -1,   -1,   -1,  690,   -1,
   -1,   -1,  694,   -1,  696,   -1,   -1,  699,  700,   -1,
  702,  703,   -1,   -1,   -1,   -1,   -1,   -1,  710,   -1,
   -1,  419,  420,  421,  422,  423,  424,  425,  426,   -1,
   -1,   -1,  430,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  733,   -1,  735,  736,   -1,   -1,   -1,   -1,   -1,
   -1,  743,   -1,   -1,  746,  747,   -1,   -1,   -1,   -1,
  752,   -1,   -1,  755,   -1,   -1,   -1,  557,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  769,   -1,   -1,
   -1,  773,   -1,   -1,   -1,  777,   -1,   -1,   -1,   -1,
  256,  257,  258,   -1,  786,  261,  262,  263,  264,  265,
   -1,   -1,  268,  269,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  277,   -1,  279,  280,  281,  282,  283,  284,  285,
  286,  287,  288,  289,  290,  291,  292,  293,  294,  295,
  296,  297,  298,  299,  300,   -1,  302,  303,  304,   -1,
   -1,   -1,  308,   -1,   -1,   -1,   -1,  313,  314,  315,
  316,   -1,  318,  319,   -1,  321,  322,  323,  324,   -1,
   -1,  327,  328,  329,   -1,   -1,   -1,   -1,  334,  335,
  336,  337,  338,  339,  340,  341,  342,  343,  344,   -1,
  346,  347,  348,  349,  350,  351,  352,  353,  354,  355,
  356,   -1,  358,   -1,  360,  361,  362,  363,   -1,   -1,
   -1,  367,   -1,  369,  370,   -1,   -1,  373,   -1,   -1,
   -1,   -1,   -1,   -1,  380,  381,   -1,  383,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  391,  392,   -1,  394,  395,
   -1,  397,   -1,   -1,  400,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  256,
   -1,   -1,   -1,  419,  420,  421,  422,  423,  424,  425,
  426,  268,  269,  429,  430,   -1,   -1,   -1,   -1,   -1,
  277,   -1,  279,  280,  281,  282,  283,  284,  285,  286,
  287,  288,  289,  290,  291,  292,  293,  294,  295,  296,
  297,  298,  299,  300,   -1,  302,   -1,   -1,   -1,   -1,
   -1,  308,   -1,   -1,   -1,   -1,  313,  314,  315,  316,
   -1,  318,  319,  320,  321,  322,  323,  324,  325,  326,
  327,  328,  329,   -1,   -1,   -1,   -1,  334,  335,  336,
  337,  338,  339,  340,  341,  342,  343,  344,   -1,  346,
  347,  348,  349,  350,  351,  352,  353,  354,  355,  356,
   -1,  358,   -1,  360,  361,  362,  363,   -1,   -1,   -1,
  367,   -1,  369,  370,   -1,   -1,  373,   -1,   -1,   -1,
   -1,   -1,   -1,  380,  381,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  391,  392,   -1,  394,  395,   -1,
  397,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  256,   -1,
   -1,   -1,  419,  420,  421,  422,  423,  424,  425,  426,
  268,  269,  429,  430,   -1,   -1,   -1,   -1,   -1,  277,
   -1,  279,  280,  281,  282,  283,  284,  285,  286,  287,
  288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
  298,  299,  300,   -1,  302,   -1,   -1,   -1,   -1,   -1,
  308,   -1,   -1,   -1,   -1,  313,  314,  315,  316,   -1,
  318,  319,   -1,  321,  322,  323,  324,  325,  326,  327,
  328,  329,   -1,   -1,   -1,   -1,  334,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,   -1,  346,  347,
  348,  349,  350,  351,  352,  353,  354,  355,  356,   -1,
  358,   -1,  360,  361,  362,  363,   -1,   -1,   -1,  367,
   -1,  369,  370,   -1,   -1,  373,   -1,   -1,   -1,   -1,
   -1,   -1,  380,  381,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  391,  392,   -1,  394,  395,   -1,  397,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  256,   -1,   -1,
   -1,  419,  420,  421,  422,  423,  424,  425,  426,  268,
  269,  429,  430,   -1,   -1,   -1,   -1,   -1,  277,   -1,
  279,  280,  281,  282,  283,  284,  285,  286,  287,  288,
  289,  290,  291,  292,  293,  294,  295,  296,  297,  298,
  299,  300,   -1,  302,   -1,   -1,   -1,   -1,   -1,  308,
   -1,   -1,   -1,   -1,  313,  314,  315,  316,   -1,  318,
  319,   -1,  321,  322,  323,  324,  325,  326,  327,  328,
  329,   -1,   -1,   -1,   -1,  334,  335,  336,  337,  338,
  339,  340,  341,  342,  343,  344,   -1,  346,  347,  348,
  349,  350,  351,  352,  353,  354,  355,  356,   -1,  358,
   -1,  360,  361,  362,  363,   -1,   -1,   -1,  367,   -1,
  369,  370,   -1,   -1,  373,   -1,   -1,   -1,   -1,   -1,
   -1,  380,  381,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  391,  392,   -1,  394,  395,   -1,  397,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  256,   -1,   -1,   -1,
  419,  420,  421,  422,  423,  424,  425,  426,  268,  269,
  429,  430,   -1,   -1,   -1,   -1,   -1,  277,   -1,  279,
  280,  281,  282,  283,  284,  285,  286,  287,  288,  289,
  290,  291,  292,  293,  294,  295,  296,  297,  298,  299,
  300,   -1,  302,   -1,   -1,   -1,   -1,   -1,  308,   -1,
   -1,   -1,   -1,  313,  314,  315,  316,   -1,  318,  319,
  320,  321,  322,  323,  324,  325,  326,  327,  328,  329,
   -1,   -1,   -1,   -1,  334,  335,  336,  337,  338,  339,
  340,  341,  342,  343,  344,   -1,  346,  347,  348,  349,
  350,  351,  352,  353,  354,  355,  356,   -1,  358,   -1,
  360,  361,  362,  363,   -1,   -1,   -1,  367,   -1,  369,
  370,   -1,   -1,  373,   -1,   -1,   -1,   -1,   -1,   -1,
  380,  381,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  391,  392,   -1,  394,  395,   -1,  397,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  256,   -1,   -1,   -1,  419,
  420,  421,  422,  423,  424,  425,  426,  268,  269,   -1,
  430,   -1,   -1,   -1,   -1,   -1,  277,   -1,  279,  280,
  281,  282,  283,  284,  285,  286,  287,  288,  289,  290,
  291,  292,  293,  294,  295,  296,  297,  298,  299,  300,
   -1,  302,   -1,   -1,   -1,   -1,   -1,  308,   -1,   -1,
   -1,   -1,  313,  314,  315,  316,   -1,  318,  319,   -1,
  321,  322,  323,  324,  325,  326,  327,  328,  329,   -1,
   -1,   -1,   -1,  334,  335,  336,  337,  338,  339,  340,
  341,  342,  343,  344,   -1,  346,  347,  348,  349,  350,
  351,  352,  353,  354,  355,  356,   -1,  358,   -1,  360,
  361,  362,  363,   -1,  256,   -1,  367,   -1,  369,  370,
   -1,   -1,  373,   -1,   -1,   -1,   -1,   -1,   -1,  380,
  381,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  391,  392,   -1,  394,  395,   -1,  397,   -1,   -1,   -1,
   -1,   -1,  294,   -1,   -1,   -1,  298,   -1,   -1,   -1,
   -1,   -1,   -1,  305,  306,  307,   -1,   -1,  419,  420,
  421,  422,  423,  424,  425,  426,  318,   -1,  429,  430,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  334,  335,  336,  337,  338,  339,  340,  341,
  342,  343,  344,   -1,  346,  347,  348,  349,  350,  351,
  352,  353,  354,  355,   -1,   -1,   -1,   -1,  360,  361,
  362,   -1,  364,   -1,   -1,  367,  368,  369,  370,  371,
  372,  373,  374,  375,  376,  377,  378,  379,  380,  381,
  382,   -1,  384,  385,  386,  387,  388,  389,  390,  391,
  392,  393,  394,  395,  396,  397,  398,  399,  400,  401,
  402,  256,  404,  405,  406,  407,  408,  409,  410,  411,
  412,  413,   -1,  415,  416,  417,  418,  419,  420,  421,
  422,  423,  424,  425,  426,   -1,   -1,   -1,  430,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  294,
   -1,   -1,   -1,  298,   -1,   -1,   -1,   -1,   -1,   -1,
  305,  306,  307,  335,  336,  337,  338,  339,  340,  341,
  342,  343,  344,  318,  346,  347,  348,  349,  350,  351,
  352,  353,  354,  355,   -1,   -1,   -1,   -1,   -1,  334,
  335,  336,  337,  338,  339,  340,  341,  342,  343,  344,
   -1,  346,  347,  348,  349,  350,  351,  352,  353,  354,
  355,   -1,   -1,   -1,   -1,  360,  361,  362,   -1,  364,
   -1,   -1,  367,  368,  369,  370,  371,  372,  373,  374,
  375,  376,  377,  378,  379,  380,  381,  382,   -1,  384,
  385,  386,  387,  388,  389,  390,  391,  392,  393,  394,
  395,  396,  397,  398,  399,  400,  401,  402,  256,  404,
  405,  406,  407,  408,  409,  410,  411,  412,  413,   -1,
  415,  416,  417,  418,  419,  420,  421,  422,  423,  424,
  425,  426,   -1,   -1,   -1,  430,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  294,   -1,   -1,   -1,
  298,   -1,   -1,   -1,   -1,   -1,   -1,  305,  306,  307,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  318,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  334,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,   -1,  346,  347,
  348,  349,  350,  351,  352,  353,  354,  355,   -1,   -1,
   -1,   -1,  360,  361,  362,   -1,  364,   -1,   -1,  367,
  368,  369,  370,  371,  372,  373,  374,  375,  376,  377,
  378,  379,  380,  381,  382,   -1,  384,  385,  386,  387,
  388,  389,  390,  391,  392,  393,  394,  395,  396,  397,
  398,  399,  400,  401,  402,   -1,  404,  405,  406,  407,
  408,  409,  410,  411,  412,  413,   -1,  415,  416,  417,
  418,  419,  420,  421,  422,  423,  424,  425,  426,  256,
   -1,   -1,  430,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  268,  269,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  277,   -1,  279,  280,  281,  282,  283,  284,  285,  286,
  287,  288,  289,  290,  291,  292,  293,  294,  295,  296,
  297,  298,  299,  300,   -1,  302,   -1,   -1,   -1,   -1,
   -1,  308,   -1,   -1,   -1,   -1,  313,  314,  315,  316,
   -1,  318,  319,   -1,  321,  322,  323,  324,   -1,   -1,
  327,  328,  329,   -1,   -1,   -1,   -1,  334,  335,  336,
  337,  338,  339,  340,  341,  342,  343,  344,   -1,  346,
  347,  348,  349,  350,  351,  352,  353,  354,  355,  356,
   -1,  358,   -1,  360,  361,  362,  363,   -1,   -1,   -1,
  367,   -1,  369,  370,   -1,   -1,  373,   -1,   -1,   -1,
   -1,   -1,   -1,  380,  381,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  391,  392,   -1,  394,  395,   -1,
  397,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  256,   -1,
   -1,   -1,  419,  420,  421,  422,  423,  424,  425,  426,
  268,  269,  429,  430,   -1,   -1,   -1,   -1,   -1,  277,
   -1,  279,  280,  281,  282,  283,  284,  285,  286,  287,
  288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
  298,  299,  300,   -1,  302,   -1,   -1,   -1,   -1,   -1,
  308,   -1,   -1,   -1,   -1,  313,  314,  315,  316,   -1,
  318,  319,   -1,  321,  322,  323,  324,   -1,   -1,  327,
  328,  329,   -1,   -1,   -1,   -1,  334,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,   -1,  346,  347,
  348,  349,  350,  351,  352,  353,  354,  355,  356,   -1,
  358,   -1,  360,  361,  362,  363,   -1,   -1,   -1,  367,
   -1,  369,  370,   -1,   -1,  373,   -1,   -1,   -1,   -1,
   -1,   -1,  380,  381,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  391,  392,   -1,  394,  395,   -1,  397,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  256,   -1,   -1,
   -1,  419,  420,  421,  422,  423,  424,  425,  426,  268,
  269,  429,  430,   -1,   -1,   -1,   -1,   -1,  277,   -1,
  279,  280,  281,  282,  283,  284,  285,  286,  287,  288,
  289,  290,  291,  292,  293,  294,  295,  296,  297,  298,
  299,  300,   -1,  302,   -1,   -1,   -1,   -1,   -1,  308,
   -1,   -1,   -1,   -1,  313,  314,  315,  316,   -1,  318,
  319,   -1,  321,  322,  323,  324,   -1,   -1,  327,  328,
  329,   -1,   -1,   -1,   -1,  334,  335,  336,  337,  338,
  339,  340,  341,  342,  343,  344,   -1,  346,  347,  348,
  349,  350,  351,  352,  353,  354,  355,  356,   -1,  358,
   -1,  360,  361,  362,  363,   -1,   -1,   -1,  367,   -1,
  369,   -1,   -1,   -1,  373,   -1,   -1,   -1,   -1,   -1,
   -1,  380,  381,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  391,  392,   -1,  394,  395,   -1,  397,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  419,  420,  421,  422,  423,  424,  425,  426,  256,   -1,
  429,  430,   -1,   -1,  262,  263,  264,  265,   -1,   -1,
  268,  269,  270,   -1,  272,   -1,   -1,   -1,   -1,  277,
   -1,  279,  280,  281,  282,  283,  284,  285,  286,  287,
  288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
  298,  299,  300,   -1,  302,   -1,  304,  305,  306,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  318,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,   -1,  346,  347,
  348,  349,  350,  351,  352,  353,  354,  355,  356,   -1,
  358,   -1,   -1,  361,   -1,  363,   -1,   -1,  256,  367,
   -1,   -1,  370,   -1,  262,  263,  264,  265,   -1,   -1,
  268,  269,  270,  381,  272,  383,   -1,   -1,   -1,  277,
   -1,  279,  280,  281,  282,  283,  284,  285,  286,  287,
  288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
  298,  299,  300,   -1,  302,   -1,  304,  305,  306,   -1,
   -1,  419,  420,  421,  422,  423,  424,  425,  426,   -1,
  318,  429,  430,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,   -1,  346,  347,
  348,  349,  350,  351,  352,  353,  354,  355,  356,   -1,
  358,   -1,   -1,  361,   -1,  363,   -1,   -1,  256,  367,
   -1,   -1,  370,   -1,  262,  263,  264,  265,   -1,   -1,
  268,  269,  270,  381,  272,  383,   -1,   -1,   -1,  277,
   -1,  279,  280,  281,  282,  283,  284,  285,  286,  287,
  288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
  298,  299,  300,   -1,  302,   -1,  304,  305,  306,   -1,
   -1,  419,  420,  421,  422,  423,  424,  425,  426,   -1,
  318,  429,  430,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,   -1,  346,  347,
  348,  349,  350,  351,  352,  353,  354,  355,  356,   -1,
  358,   -1,   -1,  361,   -1,  363,   -1,   -1,  256,  367,
   -1,   -1,  370,   -1,  262,  263,  264,  265,   -1,   -1,
  268,  269,  270,  381,  272,  383,   -1,   -1,   -1,  277,
   -1,  279,  280,  281,  282,  283,  284,  285,  286,  287,
  288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
  298,  299,  300,   -1,  302,   -1,  304,  305,  306,   -1,
   -1,  419,  420,  421,  422,  423,  424,  425,  426,   -1,
  318,  429,  430,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,   -1,  346,  347,
  348,  349,  350,  351,  352,  353,  354,  355,  356,   -1,
  358,   -1,   -1,  361,   -1,  363,   -1,   -1,  256,  367,
   -1,   -1,  370,   -1,  262,  263,  264,  265,   -1,   -1,
  268,  269,  270,  381,  272,  383,   -1,   -1,   -1,  277,
   -1,  279,  280,  281,  282,  283,  284,  285,  286,  287,
  288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
  298,  299,  300,   -1,  302,   -1,  304,  305,  306,   -1,
   -1,  419,  420,  421,  422,  423,  424,  425,  426,   -1,
  318,  429,  430,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,   -1,  346,  347,
  348,  349,  350,  351,  352,  353,  354,  355,  356,   -1,
  358,   -1,   -1,  361,   -1,  363,   -1,   -1,  256,  367,
   -1,   -1,  370,   -1,  262,  263,  264,  265,   -1,   -1,
  268,  269,  270,  381,  272,  383,   -1,   -1,   -1,  277,
   -1,  279,  280,  281,  282,  283,  284,  285,  286,  287,
  288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
  298,  299,  300,   -1,  302,   -1,  304,  305,  306,   -1,
   -1,  419,  420,  421,  422,  423,  424,  425,  426,   -1,
  318,  429,  430,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,   -1,  346,  347,
  348,  349,  350,  351,  352,  353,  354,  355,  356,   -1,
  358,   -1,   -1,  361,   -1,  363,   -1,   -1,  256,  367,
   -1,   -1,  370,   -1,  262,  263,  264,  265,   -1,   -1,
  268,  269,  270,  381,  272,  383,   -1,   -1,   -1,  277,
   -1,  279,  280,  281,  282,  283,  284,  285,  286,  287,
  288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
  298,  299,  300,   -1,  302,   -1,  304,  305,  306,   -1,
   -1,  419,  420,  421,  422,  423,  424,  425,  426,   -1,
  318,  429,  430,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,   -1,  346,  347,
  348,  349,  350,  351,  352,  353,  354,  355,  356,   -1,
  358,   -1,   -1,  361,   -1,  363,   -1,   -1,  256,  367,
   -1,   -1,  370,   -1,  262,  263,  264,  265,   -1,   -1,
  268,  269,  270,  381,  272,  383,   -1,   -1,   -1,  277,
   -1,  279,  280,  281,  282,  283,  284,  285,  286,  287,
  288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
  298,  299,  300,   -1,  302,   -1,  304,  305,  306,   -1,
   -1,  419,  420,  421,  422,  423,  424,  425,  426,   -1,
  318,  429,  430,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,   -1,  346,  347,
  348,  349,  350,  351,  352,  353,  354,  355,  356,   -1,
  358,   -1,   -1,  361,   -1,  363,   -1,   -1,  256,  367,
   -1,   -1,  370,   -1,  262,  263,  264,  265,   -1,   -1,
  268,  269,  270,  381,  272,  383,   -1,   -1,   -1,  277,
   -1,  279,  280,  281,  282,  283,  284,  285,  286,  287,
  288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
  298,  299,  300,   -1,  302,   -1,  304,  305,  306,   -1,
   -1,  419,  420,  421,  422,  423,  424,  425,  426,   -1,
  318,  429,  430,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,   -1,  346,  347,
  348,  349,  350,  351,  352,  353,  354,  355,  356,   -1,
  358,   -1,   -1,  361,   -1,  363,   -1,   -1,  256,  367,
   -1,   -1,  370,   -1,  262,  263,  264,  265,   -1,   -1,
  268,  269,  270,  381,  272,  383,   -1,   -1,   -1,  277,
   -1,  279,  280,  281,  282,  283,  284,  285,  286,  287,
  288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
  298,  299,  300,   -1,  302,   -1,  304,  305,  306,   -1,
   -1,  419,  420,  421,  422,  423,  424,  425,  426,   -1,
  318,  429,  430,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,   -1,  346,  347,
  348,  349,  350,  351,  352,  353,  354,  355,  356,   -1,
  358,   -1,   -1,  361,   -1,  363,   -1,   -1,  256,  367,
   -1,   -1,  370,   -1,  262,  263,  264,  265,   -1,   -1,
  268,  269,  270,  381,  272,  383,   -1,   -1,   -1,  277,
   -1,  279,  280,  281,  282,  283,  284,  285,  286,  287,
  288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
  298,  299,  300,   -1,  302,   -1,  304,  305,  306,   -1,
   -1,  419,  420,  421,  422,  423,  424,  425,  426,   -1,
  318,  429,  430,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,   -1,  346,  347,
  348,  349,  350,  351,  352,  353,  354,  355,  356,   -1,
  358,   -1,   -1,  361,   -1,  363,   -1,   -1,  256,  367,
   -1,   -1,  370,   -1,  262,  263,  264,  265,   -1,   -1,
  268,  269,  270,  381,  272,  383,   -1,   -1,   -1,  277,
   -1,  279,  280,  281,  282,  283,  284,  285,  286,  287,
  288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
  298,  299,  300,   -1,  302,   -1,  304,  305,  306,   -1,
   -1,  419,  420,  421,  422,  423,  424,  425,  426,   -1,
  318,  429,  430,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,   -1,  346,  347,
  348,  349,  350,  351,  352,  353,  354,  355,  356,   -1,
  358,   -1,   -1,  361,   -1,  363,   -1,   -1,  256,  367,
   -1,   -1,  370,   -1,  262,  263,  264,  265,   -1,   -1,
  268,  269,  270,  381,  272,  383,   -1,   -1,   -1,  277,
   -1,  279,  280,  281,  282,  283,  284,  285,  286,  287,
  288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
  298,  299,  300,   -1,  302,   -1,  304,  305,  306,   -1,
   -1,  419,  420,  421,  422,  423,  424,  425,  426,   -1,
  318,  429,  430,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,   -1,  346,  347,
  348,  349,  350,  351,  352,  353,  354,  355,  356,   -1,
  358,   -1,   -1,  361,   -1,  363,   -1,   -1,  256,  367,
   -1,   -1,  370,   -1,  262,  263,  264,  265,   -1,   -1,
  268,  269,  270,  381,  272,  383,   -1,   -1,   -1,  277,
   -1,  279,  280,  281,  282,  283,  284,  285,  286,  287,
  288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
  298,  299,  300,   -1,  302,   -1,  304,  305,  306,   -1,
   -1,  419,  420,  421,  422,  423,  424,  425,  426,   -1,
  318,  429,  430,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,   -1,  346,  347,
  348,  349,  350,  351,  352,  353,  354,  355,  356,   -1,
  358,   -1,   -1,  361,   -1,  363,   -1,   -1,  256,  367,
   -1,   -1,  370,   -1,  262,  263,  264,  265,   -1,   -1,
  268,  269,  270,  381,  272,  383,   -1,   -1,   -1,  277,
   -1,  279,  280,  281,  282,  283,  284,  285,  286,  287,
  288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
  298,  299,  300,   -1,  302,   -1,  304,  305,  306,   -1,
   -1,  419,  420,  421,  422,  423,  424,  425,  426,   -1,
  318,  429,  430,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,   -1,  346,  347,
  348,  349,  350,  351,  352,  353,  354,  355,  356,   -1,
  358,   -1,   -1,  361,   -1,  363,   -1,   -1,  256,  367,
   -1,   -1,  370,   -1,  262,  263,  264,  265,   -1,   -1,
  268,  269,  270,  381,  272,  383,   -1,   -1,   -1,  277,
   -1,  279,  280,  281,  282,  283,  284,  285,  286,  287,
  288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
  298,  299,  300,   -1,  302,   -1,  304,  305,  306,   -1,
   -1,  419,  420,  421,  422,  423,  424,  425,  426,   -1,
  318,  429,  430,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,   -1,  346,  347,
  348,  349,  350,  351,  352,  353,  354,  355,  356,   -1,
  358,   -1,   -1,  361,   -1,  363,   -1,   -1,  256,  367,
   -1,   -1,  370,   -1,  262,  263,  264,  265,   -1,   -1,
  268,  269,  270,  381,  272,  383,   -1,   -1,   -1,  277,
   -1,  279,  280,  281,  282,  283,  284,  285,  286,  287,
  288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
  298,  299,  300,   -1,  302,   -1,  304,  305,  306,   -1,
   -1,  419,  420,  421,  422,  423,  424,  425,  426,   -1,
  318,  429,  430,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,   -1,  346,  347,
  348,  349,  350,  351,  352,  353,  354,  355,  356,   -1,
  358,   -1,   -1,  361,   -1,  363,   -1,   -1,   -1,  367,
   -1,   -1,  370,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  381,   -1,  383,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  400,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  419,  420,  421,  422,  423,  424,  425,  426,  256,
   -1,   -1,  430,   -1,   -1,  262,  263,  264,  265,   -1,
   -1,  268,  269,  270,   -1,  272,   -1,   -1,   -1,   -1,
  277,   -1,  279,  280,  281,  282,  283,  284,  285,  286,
  287,  288,  289,  290,  291,  292,  293,  294,  295,  296,
  297,  298,  299,  300,   -1,  302,   -1,  304,  305,  306,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  318,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  256,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  335,  336,
  337,  338,  339,  340,  341,  342,  343,  344,   -1,  346,
  347,  348,  349,  350,  351,  352,  353,  354,  355,  356,
   -1,  358,   -1,   -1,  361,   -1,  363,   -1,  294,   -1,
  367,   -1,  298,   -1,   -1,   -1,   -1,   -1,   -1,  305,
  306,  307,   -1,   -1,  381,   -1,  383,   -1,   -1,   -1,
   -1,   -1,  318,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  334,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  419,  420,  421,  422,  423,  424,  425,  426,
   -1,   -1,  429,  430,  360,  361,  362,   -1,  364,   -1,
   -1,  367,  368,  369,  370,  371,  372,  373,  374,  375,
  376,  377,  378,  379,  380,  381,  382,   -1,  384,  385,
  386,  387,  388,  389,  390,  391,  392,  393,  394,  395,
  396,  397,  398,  399,  400,  401,  402,  256,  404,  405,
  406,  407,  408,  409,  410,  411,  412,  413,   -1,  415,
  416,  417,  418,  419,  420,  421,  422,  423,  424,  425,
  426,   -1,   -1,   -1,  430,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  294,   -1,   -1,   -1,  298,
   -1,   -1,   -1,   -1,   -1,   -1,  305,  306,  307,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  318,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  334,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  360,  361,  362,   -1,  364,   -1,   -1,  367,  368,
  369,  370,  371,  372,  373,  374,  375,  376,  377,  378,
  379,  380,  381,  382,   -1,  384,  385,  386,  387,  388,
  389,  390,  391,  392,  393,  394,  395,  396,  397,  398,
  399,  400,  401,  402,  256,  404,  405,  406,  407,  408,
  409,  410,  411,  412,  413,   -1,  415,  416,  417,  418,
  419,  420,  421,  422,  423,  424,  425,  426,   -1,   -1,
   -1,  430,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  294,   -1,   -1,   -1,  298,   -1,   -1,   -1,
   -1,   -1,   -1,  305,  306,  307,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  318,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  334,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  360,  361,
  362,   -1,  364,   -1,   -1,  367,  368,  369,  370,   -1,
  372,  373,  374,  375,  376,  377,  378,  379,  380,  381,
  382,   -1,  384,  385,  386,  387,  388,  389,  390,  391,
  392,  393,  394,  395,  396,  397,  398,  399,  400,  401,
  402,  256,  404,  405,  406,  407,  408,  409,  410,  411,
  412,  413,   -1,  415,  416,  417,  418,  419,  420,  421,
  422,  423,  424,  425,  426,   -1,   -1,   -1,  430,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  294,
   -1,   -1,   -1,  298,   -1,   -1,   -1,   -1,   -1,   -1,
  305,  306,  307,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  318,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  334,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  360,  361,  362,   -1,  364,
   -1,   -1,  367,  368,  369,  370,   -1,  372,  373,  374,
  375,  376,  377,  378,  379,  380,  381,  382,   -1,  384,
  385,  386,  387,  388,  389,  390,  391,  392,  393,  394,
  395,  396,  397,  398,  399,  400,  401,  402,  256,  404,
  405,  406,  407,  408,  409,  410,  411,  412,  413,   -1,
  415,  416,  417,  418,  419,  420,  421,  422,  423,  424,
  425,  426,   -1,   -1,   -1,  430,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  294,   -1,   -1,   -1,
  298,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  318,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  334,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  360,  361,  362,   -1,  364,   -1,   -1,  367,
  368,  369,  370,  371,  372,  373,  374,  375,  376,  377,
  378,  379,  380,  381,  382,   -1,  384,  385,  386,  387,
  388,  389,  390,  391,  392,  393,  394,  395,  396,  397,
  398,  399,  400,  401,  402,  256,  404,  405,  406,  407,
  408,  409,  410,  411,  412,  413,   -1,  415,  416,  417,
  418,  419,  420,  421,  422,  423,  424,  425,  426,   -1,
   -1,   -1,  430,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  294,   -1,   -1,   -1,  298,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  318,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  334,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  360,
  361,  362,   -1,  364,   -1,   -1,  367,  368,  369,  370,
  371,  372,  373,  374,  375,  376,  377,  378,  379,  380,
  381,  382,   -1,  384,  385,  386,  387,  388,  389,  390,
  391,  392,  393,  394,  395,  396,  397,  398,  399,  400,
  401,  402,  256,  404,  405,  406,  407,  408,  409,  410,
  411,  412,  413,   -1,  415,  416,  417,  418,  419,  420,
  421,  422,  423,  424,  425,  426,   -1,   -1,   -1,  430,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  294,   -1,   -1,   -1,  298,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  318,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  334,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  360,  361,  362,   -1,
  364,   -1,   -1,  367,  368,  369,  370,  371,  372,  373,
  374,  375,  376,  377,  378,  379,  380,  381,  382,   -1,
  384,  385,  386,  387,  388,  389,  390,  391,  392,  393,
  394,  395,  396,  397,  398,  399,  400,  401,  402,  256,
  404,  405,  406,  407,  408,  409,  410,  411,  412,  413,
   -1,  415,  416,  417,  418,  419,  420,  421,  422,  423,
  424,  425,  426,   -1,   -1,   -1,  430,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  294,   -1,   -1,
   -1,  298,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  318,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  334,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  360,  361,  362,   -1,  364,   -1,   -1,
  367,  368,  369,  370,  371,  372,  373,  374,  375,  376,
  377,  378,  379,  380,  381,  382,   -1,  384,  385,  386,
  387,  388,  389,  390,  391,  392,  393,  394,  395,  396,
  397,  398,  399,  400,  401,  402,  256,  404,  405,  406,
  407,  408,  409,  410,  411,  412,  413,   -1,  415,  416,
  417,  418,  419,  420,  421,  422,  423,  424,  425,  426,
   -1,   -1,   -1,  430,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  294,   -1,   -1,   -1,  298,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  318,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  334,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  360,  361,  362,   -1,  364,   -1,   -1,  367,  368,  369,
  370,  371,  372,  373,  374,  375,  376,  377,  378,  379,
  380,  381,  382,   -1,  384,  385,  386,  387,  388,  389,
  390,  391,  392,  393,  394,  395,  396,  397,  398,  399,
  400,  401,  402,  256,  404,  405,  406,  407,  408,  409,
  410,  411,  412,  413,   -1,   -1,  416,  417,  418,  419,
  420,  421,  422,  423,  424,  425,  426,   -1,   -1,   -1,
  430,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  294,   -1,   -1,   -1,  298,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  318,   -1,   -1,   -1,   -1,
   -1,  256,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  334,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  360,  361,  362,
   -1,  364,   -1,  298,  367,  368,  369,  370,  371,  372,
  373,  374,  375,  376,  377,  378,  379,  380,  381,  382,
   -1,  384,  385,  386,  387,  388,  256,  390,  391,  392,
  393,  394,  395,  396,  397,  398,  399,  400,  401,  402,
   -1,  404,  405,  406,  407,  408,  409,  410,  411,  412,
  413,   -1,  415,  416,  417,  418,  419,  420,  421,  422,
  423,  424,  425,  426,  294,   -1,   -1,  430,  298,  364,
   -1,   -1,  367,   -1,  369,   -1,   -1,   -1,  373,  374,
  375,   -1,  377,  378,  379,   -1,   -1,  382,  318,   -1,
  385,  386,  387,  388,  389,  390,  391,  392,  393,  394,
   -1,  396,  397,  398,  334,  400,  401,  402,   -1,  404,
  405,  406,  407,  408,  409,  410,  411,  412,  413,   -1,
  415,  416,  417,  418,   -1,   -1,   -1,   -1,   -1,   -1,
  360,  361,  362,   -1,  364,  430,   -1,  367,  368,  369,
  370,  371,  372,  373,  374,  375,  376,  377,  378,  379,
  380,  381,  382,   -1,  384,  385,  386,  387,  388,  389,
  390,  391,  392,  393,  394,  395,  396,  397,  256,  399,
  400,  401,  402,   -1,  404,  405,  406,  407,  408,  409,
  410,  411,  412,  413,   -1,  415,  416,  417,  418,  419,
  420,  421,  422,  423,  424,  425,  426,   -1,   -1,   -1,
  430,   -1,   -1,   -1,   -1,   -1,  294,   -1,   -1,   -1,
  298,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  318,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  334,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  360,  361,  362,   -1,  364,   -1,   -1,  367,
  368,  369,  370,  371,  372,  373,  374,  375,  376,  377,
  378,  379,  380,  381,  382,   -1,  384,  385,  386,  387,
  388,  389,  390,  391,  392,  393,  394,  395,  396,  397,
  398,  256,  400,  401,  402,   -1,  404,  405,  406,  407,
  408,  409,  410,  411,  412,  413,   -1,  415,  416,  417,
  418,  419,  420,  421,  422,  423,  424,  425,  426,   -1,
   -1,   -1,  430,   -1,   -1,   -1,   -1,   -1,   -1,  294,
   -1,   -1,   -1,  298,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  318,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  334,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  360,  361,  362,   -1,  364,
   -1,   -1,  367,  368,  369,  370,  371,  372,  373,  374,
  375,  376,  377,  378,  379,  380,  381,  382,   -1,  384,
  385,  386,  387,  388,  389,  390,  391,  392,  393,  394,
  395,  396,  256,  398,  399,  400,  401,  402,   -1,  404,
  405,  406,  407,  408,  409,  410,  411,  412,  413,   -1,
  415,  416,  417,  418,  419,  420,  421,  422,  423,  424,
  425,  426,   -1,   -1,   -1,  430,   -1,   -1,   -1,   -1,
  294,   -1,   -1,   -1,  298,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  318,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  334,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  360,  361,  362,   -1,
  364,   -1,   -1,  367,  368,  369,  370,  371,  372,  373,
  374,  375,  376,  377,  378,  379,  380,  381,  382,   -1,
  384,  385,  386,  387,  388,  256,  390,  391,  392,  393,
  394,  395,  396,  397,  398,  399,  400,  401,  402,   -1,
  404,  405,  406,  407,  408,  409,  410,  411,  412,  413,
   -1,  415,  416,  417,  418,  419,  420,  421,  422,  423,
  424,  425,  426,  294,   -1,   -1,  430,  298,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  318,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  334,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  360,
  361,  362,   -1,  364,   -1,   -1,  367,  368,  369,  370,
  371,  372,  373,  374,  375,  376,  377,  378,  379,  380,
  381,  382,   -1,  384,  385,  386,  387,  388,  389,  390,
  391,  392,  393,  394,  395,  396,  397,  256,  399,  400,
  401,  402,   -1,  404,  405,  406,  407,  408,  409,  410,
  411,  412,  413,   -1,  415,  416,  417,  418,  419,  420,
  421,  422,  423,  424,  425,  426,   -1,   -1,   -1,  430,
   -1,   -1,   -1,   -1,   -1,  294,   -1,   -1,   -1,  298,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  318,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  334,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  360,  361,  362,   -1,  364,   -1,   -1,  367,  368,
  369,  370,  371,  372,  373,  374,  375,  376,  377,  378,
  379,  380,  381,  382,   -1,  384,  385,  386,  387,  388,
  389,  390,  391,  392,  393,  394,  395,  396,  397,  398,
  256,  400,  401,  402,   -1,  404,  405,  406,  407,  408,
  409,  410,  411,  412,  413,   -1,  415,  416,  417,  418,
  419,  420,  421,  422,  423,  424,  425,  426,   -1,   -1,
   -1,  430,   -1,   -1,   -1,   -1,   -1,   -1,  294,   -1,
   -1,   -1,  298,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  318,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  334,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  360,  361,  362,   -1,  364,   -1,
   -1,  367,  368,  369,  370,  371,  372,  373,  374,  375,
  376,  377,  378,  379,  380,  381,  382,   -1,  384,  385,
  386,  387,  388,  389,  390,  391,  392,  393,  394,  395,
  396,  256,  398,  399,  400,  401,  402,   -1,  404,  405,
  406,  407,  408,  409,  410,  411,  412,  413,   -1,  415,
  416,  417,  418,  419,  420,  421,  422,  423,  424,  425,
  426,   -1,   -1,   -1,  430,   -1,   -1,   -1,   -1,  294,
   -1,   -1,   -1,  298,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  318,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  334,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  360,  361,  362,   -1,  364,
   -1,   -1,   -1,  368,  369,  370,  371,  372,  373,  374,
  375,  376,   -1,  378,  379,  380,  381,  382,   -1,  384,
  385,  386,  387,  388,  389,  390,  391,  392,  393,  394,
  395,  396,  397,  398,  399,  400,  401,  402,  256,  404,
  405,  406,  407,  408,  409,  410,  411,  412,  413,   -1,
  415,  416,  417,  418,  419,  420,  421,  422,  423,  424,
  425,  426,   -1,   -1,   -1,  430,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  294,   -1,   -1,   -1,
  298,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  318,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  334,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  360,  361,  362,   -1,  364,   -1,   -1,  367,
  368,  369,  370,  371,  372,  373,  374,  375,  376,  377,
  378,  379,  380,  381,   -1,   -1,  384,  385,  386,  387,
  388,  389,  256,  391,  392,  393,  394,  395,  396,  397,
  398,  399,  400,  401,  402,   -1,  404,  405,  406,  407,
  408,  409,  410,  411,  412,  413,   -1,  415,  416,  417,
  418,  419,  420,  421,  422,  423,  424,  425,  426,   -1,
  294,   -1,  430,   -1,  298,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  318,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  334,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  360,  361,  362,   -1,
  364,   -1,   -1,  367,  368,  369,  370,  371,  372,  373,
  374,  375,  376,  377,  378,  379,  380,  381,  382,   -1,
  384,   -1,  386,  387,   -1,  389,  390,  391,  392,  393,
  394,  395,  396,  397,  398,  399,  400,  401,  402,  256,
  404,  405,  406,  407,  408,  409,  410,  411,  412,  413,
   -1,  415,  416,  417,  418,  419,  420,  421,  422,  423,
  424,  425,  426,   -1,   -1,   -1,  430,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  294,   -1,   -1,
   -1,  298,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  318,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  334,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  360,  361,  362,   -1,  364,   -1,   -1,
  367,  368,  369,  370,  371,  372,  373,  374,  375,  376,
  377,  378,  379,  380,  381,  382,   -1,  384,  385,  386,
  387,  388,  389,  390,  391,  392,  393,  394,  395,  396,
  397,  398,  399,  400,  256,   -1,   -1,  404,  405,  406,
  407,  408,  409,  410,  411,  412,  413,   -1,  415,  416,
  417,  418,  419,  420,  421,  422,  423,  424,  425,  426,
   -1,   -1,   -1,  430,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  294,   -1,   -1,   -1,  298,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  318,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  334,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  360,  361,
  362,   -1,  364,   -1,   -1,  367,  368,  369,  370,  371,
  372,  373,  374,  375,  376,  377,  378,  379,  380,  381,
  382,   -1,  384,  385,  386,  387,  388,  389,  390,  391,
  392,  256,   -1,  395,  396,  397,  398,  399,  400,  401,
  402,   -1,  404,  405,  406,  407,  408,  409,  410,  411,
  412,  413,   -1,  415,  416,  417,  418,  419,  420,  421,
  422,  423,  424,  425,  426,   -1,   -1,   -1,  430,  294,
   -1,   -1,   -1,  298,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  318,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  334,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  360,  361,  362,   -1,  364,
   -1,   -1,  367,  368,  369,  370,  371,  372,  373,  374,
  375,  376,  377,  378,  379,  380,  381,  382,   -1,  384,
  385,  386,  387,  388,  389,  390,  391,  392,  393,  394,
  395,  396,  397,  398,  399,  400,  401,  402,  256,  404,
  405,  406,  407,  408,  409,  410,  411,  412,  413,   -1,
  415,  416,   -1,   -1,  419,  420,  421,  422,  423,  424,
  425,  426,   -1,   -1,   -1,  430,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  294,   -1,   -1,   -1,
  298,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  318,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  334,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  360,  361,  362,   -1,  364,   -1,   -1,   -1,
  368,  369,  370,  371,  372,  373,  374,  375,  376,   -1,
  378,  379,  380,  381,  382,   -1,  384,  385,  386,  387,
  388,  389,  390,  391,  392,  393,  394,  395,  396,  397,
  398,  399,  400,  401,  402,  256,  404,  405,  406,  407,
  408,  409,  410,  411,  412,  413,   -1,  415,  416,  417,
  418,  419,  420,  421,  422,  423,  424,  425,  426,   -1,
   -1,   -1,  430,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  294,   -1,   -1,   -1,  298,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  318,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  334,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  360,
  361,  362,   -1,  364,   -1,   -1,  367,  368,  369,  370,
  371,  372,  373,  374,  375,  376,  377,  378,  379,  380,
  381,  382,   -1,  384,   -1,  386,  387,   -1,  389,  390,
  391,  392,  393,  394,  395,  396,  397,  398,  399,  400,
  401,  402,  256,  404,  405,  406,  407,  408,  409,  410,
  411,  412,  413,   -1,  415,  416,  417,  418,  419,  420,
  421,  422,  423,  424,  425,  426,   -1,   -1,   -1,  430,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  294,   -1,   -1,   -1,  298,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  318,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  334,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  360,  361,  362,   -1,
  364,   -1,   -1,  367,  368,  369,  370,  371,  372,  373,
  374,  375,  376,  377,  378,  379,  380,  381,  382,   -1,
  384,  385,  386,  387,  388,  389,  390,  391,  392,  393,
  394,  395,  396,  397,  398,  399,  400,  256,   -1,   -1,
  404,  405,  406,  407,  408,  409,  410,  411,  412,  413,
   -1,  415,  416,  417,  418,  419,  420,  421,  422,  423,
  424,  425,  426,   -1,   -1,   -1,  430,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  294,   -1,   -1,   -1,  298,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  318,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  334,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  360,  361,  362,   -1,  364,   -1,   -1,  367,  368,
  369,  370,  371,  372,  373,  374,  375,  376,  377,  378,
  379,  380,  381,  382,   -1,  384,  385,  386,  387,  388,
  389,  390,  391,  392,  393,  394,  395,  396,  397,  398,
  399,  400,  256,   -1,   -1,  404,  405,  406,  407,  408,
  409,  410,  411,  412,  413,   -1,  415,  416,  417,  418,
  419,  420,  421,  422,  423,  424,  425,  426,   -1,   -1,
   -1,  430,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  294,   -1,   -1,   -1,  298,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  318,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  334,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  360,  361,  362,   -1,
  364,   -1,   -1,  367,  368,  369,  370,  371,  372,  373,
  374,  375,  376,  377,  378,  379,  380,  381,  382,   -1,
  384,  385,  386,  387,  388,  389,  390,  391,  392,  393,
  394,  395,  396,  397,  398,  399,  400,  256,   -1,   -1,
  404,  405,  406,  407,  408,  409,  410,  411,  412,  413,
   -1,  415,  416,  417,  418,  419,  420,  421,  422,  423,
  424,  425,  426,   -1,   -1,   -1,  430,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  294,   -1,   -1,   -1,  298,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  318,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  334,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  360,  361,  362,   -1,  364,   -1,   -1,  367,  368,
  369,  370,  371,  372,  373,  374,  375,  376,  377,  378,
  379,  380,  381,  382,   -1,  384,  385,  386,  387,  388,
  389,  390,  391,  392,  393,  394,  395,  396,  397,  398,
  399,  400,  256,   -1,   -1,  404,  405,  406,  407,  408,
  409,  410,  411,  412,  413,   -1,  415,  416,  417,  418,
  419,  420,  421,  422,  423,  424,  425,  426,   -1,   -1,
   -1,  430,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  294,   -1,   -1,   -1,  298,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  318,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  334,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  360,  361,  362,   -1,
  364,   -1,   -1,  367,  368,  369,  370,  371,  372,  373,
  374,  375,  376,  377,  378,  379,  380,  381,  382,   -1,
  384,  385,  386,  387,  388,  389,  390,  391,  392,  256,
   -1,  395,  396,  397,  398,  399,  400,  401,  402,   -1,
  404,  405,  406,  407,  408,  409,  410,  411,  412,  413,
   -1,  415,  416,  417,  418,  419,  420,  421,  422,  423,
  424,  425,  426,   -1,   -1,   -1,  430,  294,   -1,   -1,
   -1,  298,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  318,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  334,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  360,  361,  362,   -1,  364,   -1,   -1,
  367,  368,  369,  370,  371,  372,  373,  374,  375,  376,
  377,  378,  379,  380,  381,  382,   -1,  384,  385,  386,
  387,  388,  389,  390,  391,  392,  256,   -1,  395,  396,
  397,  398,  399,  400,  401,  402,   -1,  404,  405,  406,
  407,  408,  409,  410,  411,  412,  413,   -1,  415,  416,
  417,  418,  419,  420,  421,  422,  423,  424,  425,  426,
   -1,   -1,   -1,  430,  294,   -1,   -1,   -1,  298,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  318,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  334,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  360,  361,  362,   -1,  364,   -1,   -1,  367,  368,  369,
  370,  371,  372,  373,  374,  375,  376,  377,  378,  379,
  380,  381,  382,   -1,  384,  385,  386,  387,  388,  389,
  390,  391,  392,  393,  394,  395,  396,  397,  398,  399,
  400,  401,  402,  256,  404,  405,  406,  407,  408,  409,
  410,  411,  412,  413,   -1,  415,  416,   -1,   -1,  419,
  420,  421,  422,  423,  424,  425,  426,   -1,   -1,   -1,
  430,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  294,   -1,   -1,   -1,  298,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  318,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  334,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  360,  361,  362,
   -1,  364,   -1,   -1,  367,  368,  369,  370,  371,  372,
  373,  374,  375,  376,  377,  378,  379,  380,  381,  382,
   -1,  384,  385,  386,  387,  388,  389,  390,  391,  392,
  393,  394,  395,  396,  397,  398,  399,  400,  401,  402,
  256,  404,  405,  406,  407,  408,  409,  410,  411,  412,
  413,   -1,  415,  416,   -1,   -1,  419,  420,  421,  422,
  423,  424,  425,  426,   -1,   -1,   -1,  430,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  294,   -1,
   -1,   -1,  298,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  318,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  334,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  360,  361,  362,   -1,  364,   -1,
   -1,  367,  368,  369,  370,  371,  372,  373,  374,  375,
  376,  377,  378,  379,  380,  381,  382,   -1,  384,  385,
  386,  387,  388,  389,  390,  391,  392,  393,  394,  395,
  396,  397,  398,  399,  400,  401,  402,  256,  404,  405,
  406,  407,  408,  409,  410,  411,  412,  413,   -1,  415,
  416,   -1,   -1,  419,  420,  421,  422,  423,  424,  425,
  426,   -1,   -1,   -1,  430,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  294,   -1,   -1,   -1,  298,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  318,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  334,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  360,  361,  362,   -1,  364,   -1,   -1,  367,  368,
  369,  370,  371,  372,  373,  374,  375,  376,  377,  378,
  379,  380,  381,  382,   -1,  384,  385,  386,  387,  388,
  389,  390,  391,  392,  393,  394,  256,   -1,  397,  398,
  399,   -1,  401,  402,   -1,  404,  405,  406,  407,  408,
  409,  410,  411,  412,  413,   -1,  415,  416,  417,  418,
  419,  420,  421,  422,  423,  424,  425,  426,   -1,   -1,
   -1,  430,   -1,   -1,  294,   -1,   -1,   -1,  298,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  318,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  334,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  360,  361,  362,   -1,  364,   -1,   -1,  367,  368,  369,
  370,  371,  372,  373,  374,  375,  376,  377,  378,  379,
  380,  381,  382,   -1,  384,  385,  386,  387,  388,  389,
  390,  391,  392,  393,  394,  256,   -1,  397,  398,  399,
   -1,  401,  402,   -1,  404,  405,  406,  407,  408,  409,
  410,  411,  412,  413,   -1,  415,  416,  417,  418,  419,
  420,  421,  422,  423,  424,  425,  426,   -1,   -1,   -1,
  430,   -1,   -1,  294,   -1,   -1,   -1,  298,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  318,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  334,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  360,
  361,  362,   -1,  364,   -1,   -1,  367,  368,  369,  370,
  371,  372,  373,  374,  375,  376,  377,  378,  379,  380,
  381,  382,   -1,  384,  385,  386,  387,  388,  389,  390,
  391,  392,  393,  394,  256,   -1,  397,  398,  399,   -1,
  401,  402,   -1,  404,  405,  406,  407,  408,  409,  410,
  411,  412,  413,   -1,  415,  416,  417,  418,  419,  420,
  421,  422,  423,  424,  425,  426,   -1,   -1,   -1,  430,
   -1,   -1,  294,   -1,   -1,   -1,  298,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  318,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  334,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  360,  361,
  362,   -1,   -1,   -1,   -1,  367,  368,  369,  370,  371,
  372,  373,  374,  375,  376,  377,   -1,   -1,  380,  381,
  382,   -1,  384,  385,   -1,   -1,  388,  389,  390,  391,
  392,  393,  394,  395,  396,  397,  398,  399,  400,  401,
  402,  256,  404,  405,  406,  407,  408,  409,  410,  411,
  412,  413,   -1,  415,  416,  417,  418,  419,  420,  421,
  422,  423,  424,  425,  426,   -1,   -1,   -1,  430,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  294,
   -1,   -1,   -1,  298,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  318,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  334,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  360,  361,  362,   -1,   -1,
   -1,   -1,  367,  368,  369,  370,  371,  372,  373,  374,
  375,  376,  377,   -1,   -1,  380,  381,  382,   -1,  384,
  385,   -1,   -1,  388,  389,  390,  391,  392,  393,  394,
  395,  396,  397,  398,  399,  400,  401,  402,  256,  404,
  405,  406,  407,  408,  409,  410,  411,  412,  413,   -1,
  415,  416,  417,  418,  419,  420,  421,  422,  423,  424,
  425,  426,   -1,   -1,   -1,  430,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  294,   -1,   -1,   -1,
  298,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  318,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  334,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  360,  361,  362,   -1,   -1,   -1,   -1,  367,
  368,  369,  370,  371,  372,  373,  374,  375,  376,  377,
   -1,   -1,  380,  381,  382,   -1,  384,  385,   -1,   -1,
  388,  389,  390,  391,  392,  393,  394,  395,  396,  397,
  398,  399,  400,  401,  402,  256,  404,  405,  406,  407,
  408,  409,  410,  411,  412,  413,   -1,  415,  416,  417,
  418,  419,  420,  421,  422,  423,  424,  425,  426,   -1,
   -1,   -1,  430,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  294,   -1,   -1,   -1,  298,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  318,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  334,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  360,
  361,  362,   -1,  364,   -1,   -1,   -1,  368,   -1,  370,
   -1,  372,  373,  374,   -1,  376,  377,  378,  379,  380,
  381,  382,   -1,  384,  385,  386,  387,  388,  389,  390,
  256,   -1,  393,  394,  395,  396,  397,  398,  399,  400,
  401,  402,   -1,  404,  405,  406,  407,  408,  409,  410,
  411,  412,  413,   -1,  415,   -1,  417,  418,  419,  420,
  421,  422,  423,  424,  425,  426,   -1,   -1,  294,  430,
   -1,   -1,  298,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  318,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  334,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  360,  361,  362,   -1,  364,   -1,
   -1,  367,  368,  369,  370,  371,  372,  373,  374,  375,
  376,   -1,  378,  379,  380,  381,  382,   -1,  384,  385,
  386,  387,  388,  389,  390,  391,  392,  393,  394,  395,
  396,  397,  398,  399,  400,  401,  402,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  415,
  416,  417,  418,  419,  420,  421,  422,  423,  424,  425,
  426,  256,   -1,   -1,  430,   -1,  261,  262,  263,  264,
  265,   -1,   -1,  268,  269,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  277,   -1,  279,  280,  281,  282,  283,  284,
  285,  286,  287,  288,  289,  290,  291,  292,  293,  294,
  295,  296,  297,  298,  299,  300,   -1,  302,  303,  304,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  318,   -1,   -1,  335,  336,  337,  338,
  339,  340,  341,  342,  343,  344,   -1,  346,  347,  348,
  349,  350,  351,  352,  353,  354,  355,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  367,   -1,
   -1,  356,  371,  358,   -1,   -1,   -1,   -1,  363,   -1,
   -1,  256,  367,   -1,   -1,  370,  261,  262,  263,  264,
  265,   -1,   -1,  268,  269,   -1,  395,   -1,  383,   -1,
  399,   -1,  277,   -1,  279,  280,  281,  282,  283,  284,
  285,  286,  287,  288,  289,  290,  291,  292,  293,  294,
  295,  296,  297,  298,  299,  300,   -1,  302,  303,  304,
   -1,  430,   -1,   -1,  419,  420,  421,  422,  423,  424,
  425,  426,   -1,  318,  429,  430,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  356,   -1,  358,   -1,   -1,   -1,   -1,  363,   -1,
   -1,  256,  367,   -1,   -1,  370,  261,  262,  263,  264,
  265,   -1,   -1,  268,  269,   -1,   -1,   -1,  383,   -1,
   -1,   -1,  277,   -1,  279,  280,  281,  282,  283,  284,
  285,  286,  287,  288,  289,  290,  291,  292,  293,  294,
  295,  296,  297,  298,  299,  300,   -1,  302,  303,  304,
   -1,   -1,   -1,   -1,  419,  420,  421,  422,  423,  424,
  425,  426,   -1,  318,  429,  430,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  356,   -1,  358,   -1,   -1,   -1,   -1,  363,   -1,
   -1,  256,  367,   -1,   -1,  370,  261,  262,  263,  264,
  265,   -1,   -1,  268,  269,   -1,   -1,   -1,  383,   -1,
   -1,   -1,  277,   -1,  279,  280,  281,  282,  283,  284,
  285,  286,  287,  288,  289,  290,  291,  292,  293,  294,
  295,  296,  297,  298,  299,  300,   -1,  302,  303,  304,
   -1,   -1,   -1,   -1,  419,  420,  421,  422,  423,  424,
  425,  426,   -1,  318,  429,  430,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  356,   -1,  358,   -1,   -1,   -1,   -1,  363,   -1,
   -1,  256,  367,   -1,   -1,  370,  261,  262,  263,  264,
  265,   -1,   -1,  268,  269,   -1,   -1,   -1,  383,   -1,
   -1,   -1,  277,   -1,  279,  280,  281,  282,  283,  284,
  285,  286,  287,  288,  289,  290,  291,  292,  293,  294,
  295,  296,  297,  298,  299,  300,   -1,  302,  303,  304,
   -1,   -1,   -1,   -1,  419,  420,  421,  422,  423,  424,
  425,  426,   -1,  318,  429,  430,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  356,   -1,  358,   -1,   -1,   -1,   -1,  363,   -1,
  256,   -1,  367,   -1,   -1,  261,  262,  263,  264,  265,
   -1,   -1,  268,  269,   -1,   -1,   -1,   -1,  383,   -1,
   -1,  277,   -1,  279,  280,  281,  282,  283,  284,  285,
  286,  287,  288,  289,  290,  291,  292,  293,  294,  295,
  296,  297,  298,  299,  300,   -1,  302,  303,  304,   -1,
   -1,   -1,   -1,   -1,  419,  420,  421,  422,  423,  424,
  425,  426,  318,   -1,  429,  430,   -1,   -1,   -1,   -1,
   -1,  256,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  279,  280,  281,  282,  283,  284,
  356,   -1,  358,   -1,   -1,   -1,   -1,  363,   -1,  294,
   -1,  367,   -1,   -1,  370,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  308,   -1,   -1,   -1,  383,  313,  314,
  315,  316,   -1,  318,  319,   -1,  321,  322,  323,  324,
   -1,   -1,  327,  328,  329,   -1,   -1,   -1,   -1,  334,
   -1,  256,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  419,  420,  421,  422,  423,  424,  425,
  426,   -1,   -1,   -1,  430,  360,  361,  362,   -1,   -1,
   -1,   -1,  367,   -1,  369,   -1,   -1,   -1,  373,  294,
   -1,   -1,   -1,   -1,   -1,  380,  381,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  391,  392,   -1,  394,
  395,   -1,  397,  318,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  256,   -1,   -1,   -1,   -1,   -1,   -1,  334,
   -1,   -1,   -1,   -1,  419,  420,  421,  422,  423,  424,
  425,  426,   -1,   -1,  429,  430,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  360,  361,  362,   -1,   -1,
  294,   -1,  367,   -1,   -1,   -1,   -1,   -1,  373,   -1,
   -1,   -1,   -1,   -1,   -1,  380,  381,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  318,   -1,  391,  392,   -1,  394,
  395,   -1,  397,  256,   -1,   -1,   -1,   -1,   -1,   -1,
  334,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  419,  420,  421,  422,  423,  424,
  425,  426,   -1,   -1,   -1,  430,  360,  361,  362,   -1,
   -1,  294,   -1,  367,   -1,  298,   -1,   -1,   -1,   -1,
   -1,   -1,  305,  306,  307,   -1,  380,  381,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  318,   -1,  391,  392,   -1,
  394,  395,   -1,  397,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  334,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  419,  420,  421,  422,  423,
  424,  425,  426,   -1,   -1,   -1,  430,  360,  361,  362,
   -1,  364,   -1,   -1,  367,  368,  369,  370,   -1,  372,
  373,  374,  375,  376,  377,  378,  379,  380,  381,  382,
   -1,  384,  385,  386,  387,  388,  389,  390,  391,  392,
  393,  394,  256,  396,  397,  398,   -1,  400,  401,  402,
   -1,  404,  405,  406,  407,  408,  409,  410,  411,  412,
  413,   -1,  415,  416,  417,  418,  419,  420,  421,  422,
  423,  424,  425,  426,   -1,   -1,   -1,   -1,   -1,   -1,
  294,   -1,   -1,   -1,  298,   -1,   -1,   -1,   -1,   -1,
   -1,  305,  306,  307,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  318,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  334,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  360,  361,  362,   -1,
  364,   -1,   -1,  367,  368,  369,  370,   -1,  372,  373,
  374,  375,  376,  377,  378,  379,  380,  381,  382,   -1,
  384,  385,  386,  387,  388,  389,  390,  391,  392,  393,
  394,   -1,  396,  397,  398,   -1,  400,  401,  402,   -1,
  404,  405,  406,  407,  408,  409,  410,  411,  412,  413,
   -1,  415,  416,  417,  418,  419,  420,  421,  422,  423,
  424,  425,  426,  262,  263,  264,  265,   -1,   -1,  268,
  269,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  277,   -1,
  279,  280,  281,  282,  283,  284,  285,  286,  287,  288,
  289,  290,  291,  292,  293,  294,  295,  296,  297,  298,
  299,  300,   -1,  302,   -1,  304,  305,  306,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  335,  336,  337,  338,
  339,  340,  341,  342,  343,  344,   -1,  346,  347,  348,
  349,  350,  351,  352,  353,  354,  355,  356,   -1,  358,
   -1,   -1,  361,   -1,  363,   -1,  262,  263,  264,  265,
   -1,   -1,  268,  269,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  277,  381,  279,  280,  281,  282,  283,  284,  285,
  286,  287,  288,  289,  290,  291,  292,  293,  294,  295,
  296,  297,  298,  299,  300,   -1,  302,   -1,  304,  305,
  306,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  430,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  335,
  336,  337,  338,  339,  340,  341,  342,  343,  344,   -1,
  346,  347,  348,  349,  350,  351,  352,  353,  354,  355,
  356,   -1,  358,   -1,   -1,  361,   -1,  363,   -1,  262,
  263,  264,  265,   -1,   -1,  268,  269,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  277,  381,  279,  280,  281,  282,
  283,  284,  285,  286,  287,  288,  289,  290,  291,  292,
  293,  294,  295,  296,  297,  298,  299,  300,   -1,  302,
   -1,  304,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  430,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  335,  336,  337,  338,  339,  340,  341,  342,
  343,  344,   -1,  346,  347,  348,  349,  350,  351,  352,
  353,  354,  355,  356,   -1,  358,   -1,   -1,  361,   -1,
  363,  262,  263,  264,  265,   -1,   -1,  268,  269,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  277,   -1,  279,  280,
  281,  282,  283,  284,  285,  286,  287,  288,  289,  290,
  291,  292,  293,  294,  295,  296,  297,  298,  299,  300,
   -1,  302,   -1,  304,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  430,   -1,   -1,
   -1,   -1,   -1,   -1,  335,  336,  337,  338,  339,  340,
  341,  342,  343,  344,   -1,  346,  347,  348,  349,  350,
  351,  352,  353,  354,  355,  356,   -1,  358,   -1,   -1,
  361,   -1,  363,  262,  263,  264,  265,   -1,   -1,  268,
  269,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  277,   -1,
  279,  280,  281,  282,  283,  284,  285,  286,  287,  288,
  289,  290,  291,  292,  293,  294,  295,  296,  297,  298,
  299,  300,   -1,  302,   -1,  304,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  430,
   -1,   -1,   -1,   -1,   -1,   -1,  335,  336,  337,  338,
  339,  340,  341,  342,  343,  344,   -1,  346,  347,  348,
  349,  350,  351,  352,  353,  354,  355,  356,   -1,  358,
   -1,   -1,  361,   -1,  363,   -1,  268,  269,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  277,   -1,  279,  280,  281,
  282,  283,  284,  285,  286,  287,  288,  289,  290,  291,
  292,  293,  294,  295,  296,  297,  298,  299,  300,   -1,
  302,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  318,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  430,  334,  335,  336,  337,  338,  339,  340,  341,
  342,  343,  344,   -1,  346,  347,  348,  349,  350,  351,
  352,  353,  354,  355,  356,   -1,  358,   -1,  360,  361,
  362,  363,   -1,   -1,   -1,  367,   -1,   -1,   -1,   -1,
   -1,  373,   -1,   -1,   -1,   -1,   -1,   -1,  380,  381,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  391,
  392,   -1,  394,  395,   -1,  397,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  419,  420,  421,
  422,  423,  424,  425,  426,  268,  269,   -1,  430,   -1,
   -1,   -1,   -1,   -1,  277,   -1,  279,  280,  281,  282,
  283,  284,  285,  286,  287,  288,  289,  290,  291,  292,
  293,  294,  295,  296,  297,  298,  299,  300,   -1,  302,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  318,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  334,  335,  336,  337,  338,  339,  340,  341,  342,
  343,  344,   -1,  346,  347,  348,  349,  350,  351,  352,
  353,  354,  355,  356,   -1,  358,   -1,  360,  361,  362,
  363,   -1,   -1,   -1,  367,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  380,  381,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  391,  392,
   -1,  394,  395,   -1,  397,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  419,  420,  421,  422,
  423,  424,  425,  426,  268,  269,   -1,  430,   -1,   -1,
   -1,   -1,   -1,  277,   -1,  279,  280,  281,  282,  283,
  284,  285,  286,  287,  288,  289,  290,  291,  292,  293,
  294,  295,  296,  297,  298,  299,  300,   -1,  302,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  318,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  334,  335,  336,  337,  338,  339,  340,  341,  342,  343,
  344,   -1,  346,  347,  348,  349,  350,  351,  352,  353,
  354,  355,  356,   -1,  358,   -1,  360,  361,  362,  363,
   -1,   -1,   -1,  367,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  380,  381,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  391,  392,   -1,
  394,  395,   -1,  397,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  419,  420,  421,  422,  423,
  424,  425,  426,  268,  269,   -1,  430,   -1,   -1,   -1,
   -1,   -1,  277,   -1,  279,  280,  281,  282,  283,  284,
  285,  286,  287,  288,  289,  290,  291,  292,  293,  294,
  295,  296,  297,  298,  299,  300,   -1,  302,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  335,  336,  337,  338,  339,  340,  341,  342,  343,  344,
   -1,  346,  347,  348,  349,  350,  351,  352,  353,  354,
  355,  356,   -1,  358,   -1,   -1,  361,   -1,  363,  268,
  269,   -1,  367,   -1,   -1,   -1,   -1,   -1,  277,   -1,
  279,  280,  281,  282,  283,  284,  285,  286,  287,  288,
  289,  290,  291,  292,  293,  294,  295,  296,  297,  298,
  299,  300,   -1,  302,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  430,  335,  336,  337,  338,
  339,  340,  341,  342,  343,  344,   -1,  346,  347,  348,
  349,  350,  351,  352,  353,  354,  355,  356,   -1,  358,
   -1,   -1,  361,   -1,  363,  268,  269,   -1,   -1,  368,
   -1,   -1,   -1,   -1,  277,   -1,  279,  280,  281,  282,
  283,  284,  285,  286,  287,  288,  289,  290,  291,  292,
  293,  294,  295,  296,  297,  298,  299,  300,   -1,  302,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  430,  335,  336,  337,  338,  339,  340,  341,  342,
  343,  344,   -1,  346,  347,  348,  349,  350,  351,  352,
  353,  354,  355,  356,   -1,  358,   -1,   -1,  361,   -1,
  363,  268,  269,   -1,   -1,  368,   -1,   -1,   -1,   -1,
  277,   -1,  279,  280,  281,  282,  283,  284,  285,  286,
  287,  288,  289,  290,  291,  292,  293,  294,  295,  296,
  297,  298,  299,  300,   -1,  302,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  430,  335,  336,
  337,  338,  339,  340,  341,  342,  343,  344,   -1,  346,
  347,  348,  349,  350,  351,  352,  353,  354,  355,  356,
   -1,  358,   -1,   -1,  361,   -1,  363,  268,  269,   -1,
   -1,  368,   -1,   -1,   -1,   -1,  277,   -1,  279,  280,
  281,  282,  283,  284,  285,  286,  287,  288,  289,  290,
  291,  292,  293,  294,  295,  296,  297,  298,  299,  300,
   -1,  302,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  430,  335,  336,  337,  338,  339,  340,
  341,  342,  343,  344,   -1,  346,  347,  348,  349,  350,
  351,  352,  353,  354,  355,  356,   -1,  358,   -1,   -1,
  361,   -1,  363,  268,  269,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  277,   -1,  279,  280,  281,  282,  283,  284,
  285,  286,  287,  288,  289,  290,  291,  292,  293,  294,
  295,  296,  297,  298,  299,  300,   -1,  302,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  430,
  335,  336,  337,  338,  339,  340,  341,  342,  343,  344,
   -1,  346,  347,  348,  349,  350,  351,  352,  353,  354,
  355,  356,   -1,  358,  268,  269,  361,   -1,  363,   -1,
   -1,   -1,   -1,  277,   -1,  279,  280,  281,  282,  283,
  284,  285,  286,  287,  288,  289,  290,  291,  292,  293,
  294,  295,  296,  297,  298,  299,  300,   -1,  302,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  318,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  430,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  356,   -1,  358,   -1,   -1,   -1,   -1,  363,
   -1,   -1,   -1,  367,   -1,   -1,  370,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  256,  257,  258,   -1,
   -1,  261,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  419,  420,  421,  422,  423,
  424,  425,  426,  303,   -1,  429,  430,   -1,  308,   -1,
   -1,   -1,   -1,  313,  314,  315,  316,  294,   -1,  319,
   -1,  321,  322,  323,  324,   -1,   -1,  327,  328,  329,
   -1,   -1,   -1,   -1,  334,  335,  336,  337,  338,  339,
  340,  341,  342,  343,  344,   -1,  346,  347,  348,  349,
  350,  351,  352,  353,  354,  355,   -1,  334,   -1,   -1,
  360,  361,  362,   -1,   -1,   -1,   -1,   -1,   -1,  369,
   -1,   -1,   -1,  373,   -1,   -1,   -1,   -1,   -1,   -1,
  380,  381,   -1,  383,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  391,  392,   -1,  394,  395,   -1,  397,   -1,   -1,
  377,  378,  379,  380,  381,  382,   -1,   -1,  385,  386,
  387,  388,  389,  390,  391,  392,  393,  394,  395,  396,
  397,  398,  399,  400,  401,  402,  294,  404,  405,  406,
  407,  408,  409,  410,  411,  412,  413,   -1,   -1,  416,
  417,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  318,   -1,   -1,  430,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  334,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  360,  361,  362,   -1,   -1,  294,   -1,  367,
   -1,   -1,   -1,   -1,   -1,  373,   -1,   -1,  376,   -1,
   -1,   -1,  380,  381,   -1,   -1,  384,   -1,   -1,   -1,
   -1,  318,   -1,  391,  392,   -1,  394,  395,   -1,  397,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  334,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  419,  420,  421,  422,  423,  424,  425,  426,   -1,
   -1,   -1,  430,  360,  361,  362,   -1,   -1,  294,   -1,
  367,   -1,   -1,   -1,   -1,   -1,  373,   -1,   -1,  376,
   -1,   -1,   -1,  380,  381,   -1,   -1,  384,   -1,   -1,
   -1,   -1,  318,   -1,  391,  392,   -1,  394,  395,   -1,
  397,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  334,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  419,  420,  421,  422,  423,  424,  425,  426,
   -1,   -1,   -1,  430,  360,  361,  362,   -1,   -1,  294,
   -1,  367,  368,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  376,   -1,   -1,   -1,  380,  381,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  318,   -1,  391,  392,   -1,  394,  395,
   -1,  397,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  334,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  294,   -1,   -1,
   -1,   -1,   -1,  419,  420,  421,  422,  423,  424,  425,
  426,   -1,   -1,   -1,  430,  360,  361,  362,   -1,   -1,
   -1,  318,  367,   -1,   -1,   -1,   -1,   -1,  373,   -1,
   -1,   -1,   -1,   -1,   -1,  380,  381,  334,   -1,  384,
   -1,   -1,   -1,   -1,   -1,   -1,  391,  392,   -1,  394,
  395,   -1,  397,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  360,  361,  362,   -1,   -1,  294,   -1,
  367,   -1,  369,  370,  419,  420,  421,  422,  423,  424,
  425,  426,   -1,  380,  381,  430,   -1,   -1,   -1,   -1,
   -1,   -1,  318,   -1,  391,  392,   -1,  394,  395,   -1,
  397,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  334,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  294,   -1,   -1,   -1,
   -1,   -1,  419,  420,  421,  422,  423,  424,  425,  426,
   -1,   -1,   -1,  430,  360,  361,  362,   -1,   -1,   -1,
  318,  367,   -1,   -1,   -1,   -1,  372,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  380,  381,  334,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  391,  392,   -1,  394,  395,
   -1,  397,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  360,  361,  362,   -1,   -1,  294,   -1,  367,
  368,   -1,   -1,  419,  420,  421,  422,  423,  424,  425,
  426,   -1,  380,  381,  430,   -1,   -1,   -1,   -1,   -1,
   -1,  318,   -1,  391,  392,   -1,  394,  395,   -1,  397,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  334,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  419,  420,  421,  422,  423,  424,  425,  426,   -1,
   -1,   -1,  430,  360,  361,  362,   -1,   -1,  294,   -1,
  367,   -1,  369,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  380,  381,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  318,   -1,  391,  392,   -1,  394,  395,   -1,
  397,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  334,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  294,   -1,   -1,   -1,
   -1,   -1,  419,  420,  421,  422,  423,  424,  425,  426,
   -1,   -1,   -1,  430,  360,  361,  362,   -1,   -1,   -1,
  318,  367,   -1,   -1,   -1,   -1,   -1,  373,   -1,   -1,
   -1,   -1,   -1,   -1,  380,  381,  334,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  391,  392,   -1,  394,  395,
   -1,  397,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  360,  361,  362,   -1,   -1,  294,   -1,  367,
  368,   -1,   -1,  419,  420,  421,  422,  423,  424,  425,
  426,   -1,  380,  381,  430,   -1,   -1,   -1,   -1,   -1,
   -1,  318,   -1,  391,  392,   -1,  394,  395,   -1,  397,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  334,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  294,   -1,   -1,   -1,   -1,
   -1,  419,  420,  421,  422,  423,  424,  425,  426,   -1,
   -1,   -1,  430,  360,  361,  362,   -1,   -1,   -1,  318,
  367,   -1,   -1,   -1,   -1,   -1,  373,   -1,   -1,   -1,
   -1,   -1,   -1,  380,  381,  334,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  391,  392,   -1,  394,  395,   -1,
  397,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  360,  361,  362,   -1,   -1,  294,   -1,  367,  368,
   -1,   -1,  419,  420,  421,  422,  423,  424,  425,  426,
   -1,  380,  381,  430,   -1,   -1,   -1,   -1,   -1,   -1,
  318,   -1,  391,  392,   -1,  394,  395,   -1,  397,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  334,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  294,   -1,   -1,   -1,   -1,   -1,
  419,  420,  421,  422,  423,  424,  425,  426,   -1,   -1,
   -1,  430,  360,  361,  362,   -1,   -1,   -1,  318,  367,
   -1,   -1,   -1,   -1,   -1,  373,   -1,   -1,   -1,   -1,
   -1,   -1,  380,  381,  334,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  391,  392,   -1,  394,  395,   -1,  397,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  360,  361,  362,   -1,   -1,  294,   -1,  367,  368,   -1,
   -1,  419,  420,  421,  422,  423,  424,  425,  426,   -1,
  380,  381,  430,   -1,   -1,   -1,   -1,   -1,   -1,  318,
   -1,  391,  392,   -1,  394,  395,   -1,  397,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  334,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  294,   -1,   -1,   -1,   -1,   -1,  419,
  420,  421,  422,  423,  424,  425,  426,   -1,   -1,   -1,
  430,  360,  361,  362,   -1,   -1,   -1,  318,  367,  368,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  380,  381,  334,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  391,  392,   -1,  394,  395,   -1,  397,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  360,
  361,  362,   -1,   -1,  294,   -1,  367,  368,   -1,   -1,
  419,  420,  421,  422,  423,  424,  425,  426,   -1,  380,
  381,  430,   -1,   -1,   -1,   -1,   -1,   -1,  318,   -1,
  391,  392,   -1,  394,  395,   -1,  397,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  334,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  294,   -1,   -1,   -1,   -1,   -1,  419,  420,
  421,  422,  423,  424,  425,  426,   -1,   -1,   -1,  430,
  360,  361,  362,   -1,   -1,   -1,  318,  367,  368,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  380,  381,  334,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  391,  392,  294,  394,  395,   -1,  397,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  360,  361,
  362,   -1,   -1,   -1,   -1,  367,   -1,  318,   -1,  419,
  420,  421,  422,  423,  424,  425,  426,   -1,  380,  381,
  430,   -1,   -1,  334,   -1,   -1,   -1,   -1,   -1,  391,
  392,   -1,  394,  395,   -1,  397,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  360,
  361,  362,   -1,   -1,   -1,   -1,  367,  419,  420,  421,
  422,  423,  424,  425,  426,   -1,   -1,   -1,  430,  380,
  381,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  391,  392,   -1,  394,  395,   -1,  397,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  419,  420,
  421,  422,  423,  424,  425,  426,   -1,   -1,   -1,  430,
  262,  263,  264,  265,   -1,   -1,  268,  269,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  277,   -1,  279,  280,  281,
  282,  283,  284,  285,  286,  287,  288,  289,  290,  291,
  292,  293,  294,  295,  296,  297,  298,  299,  300,   -1,
  302,   -1,  304,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  364,   -1,   -1,  367,   -1,  369,
   -1,  371,   -1,  373,  356,  375,  358,  377,  378,  379,
   -1,  363,  382,  383,   -1,  385,  386,  387,  388,  389,
  390,  391,  392,  393,  394,  395,  396,  397,  398,  399,
  400,  401,  402,   -1,  404,  405,  406,  407,  408,  409,
  410,  411,  412,  413,  364,  415,  416,  417,  418,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  377,  378,  379,
  430,   -1,  382,   -1,   -1,  385,  386,  387,  388,  389,
  390,   -1,   -1,  393,  394,  395,  396,  397,  398,  399,
  400,  401,  402,   -1,  404,  405,  406,  407,  408,  409,
  410,  411,  412,  413,   -1,  415,   -1,  417,  418,
};
static int yyctable[] = {                                    146,
    8,   -1,  177,  383,   -1,  178,  383,   -1,  165,  105,
   -1,  166,  105,   -1,  167,  105,   -1,   19,  105,   -1,
  270,  315,   -1,  271,  353,   -1,  272,  353,   -1,  273,
  353,   -1,  274,  353,   -1,  275,  353,   -1,  276,  353,
   -1,  277,  353,   -1,  278,  353,   -1,  279,  353,   -1,
  280,  353,   -1,  281,  353,   -1,  283,  319,   -1,  284,
  319,   -1,  285,  321,   -1,  286,  323,   -1,  287,  325,
   -1,  288,  327,   -1,  289,  329,   -1,  290,  329,   -1,
  291,  331,   -1,  292,  331,   -1,  293,  331,   -1,  294,
  331,   -1,  295,  331,   -1,  296,  334,   -1,  297,  334,
   -1,  298,  340,   -1,  299,  340,   -1,  300,  343,   -1,
  301,  343,   -1,  302,  343,   -1,  303,  346,   -1,  304,
  346,   -1,  148,  355,   -1,  149,  355,   -1,  150,  355,
   -1,  152,  355,   -1,  153,  355,   -1,  154,  355,   -1,
  155,  355,   -1,  165,  110,   -1,  165,  111,   -1,  166,
  111,   -1,  167,  111,   -1,   19,  111,   -1,  344,  382,
   -1,  178,  382,   -1,   43,  165,   -1,   44,  165,   -1,
   45,  165,   -1,   46,  165,   -1,   47,  165,   -1,   48,
  165,   -1,   49,  165,   -1,   50,  165,   -1,   51,  165,
   -1,   52,  165,   -1,   53,  165,   -1,   54,  165,   -1,
   55,  165,   -1,   56,  165,   -1,   57,  165,   -1,   58,
  165,   -1,   59,  165,   -1,   60,  165,   -1,   61,  165,
   -1,   62,  165,   -1,   63,  165,   -1,   64,  165,   -1,
   65,  165,   -1,   66,  165,   -1,   67,  165,   -1,   68,
  165,   -1,   69,  165,   -1,   70,  165,   -1,   71,  165,
   -1,   72,  165,   -1,   73,  165,   -1,   74,  165,   -1,
   75,  165,   -1,   76,  165,   -1,   77,  165,   -1,   78,
  165,   -1,   79,  165,   -1,   80,  165,   -1,   81,  165,
   -1,   82,  165,   -1,   83,  165,   -1,   84,  165,   -1,
   85,  165,   -1,   86,  165,   -1,   87,  165,   -1,   88,
  165,   -1,   89,  165,   -1,   90,  165,   -1,   91,  165,
   -1,   92,  165,   -1,   19,  165,   -1,  146,   25,   -1,
   43,  243,   -1,   44,  243,   -1,   45,  243,   -1,   46,
  243,   -1,   47,  243,   -1,   48,  243,   -1,   49,  243,
   -1,   50,  243,   -1,   51,  243,   -1,   52,  243,   -1,
   53,  243,   -1,   54,  243,   -1,   55,  243,   -1,   56,
  243,   -1,   57,  243,   -1,   58,  243,   -1,   59,  243,
   -1,   60,  243,   -1,   61,    8,  243,   -1,   62,  243,
   -1,   63,  243,   -1,   64,  243,   -1,   65,  243,   -1,
   66,  243,   -1,   67,  243,   -1,   68,    8,  243,   -1,
    8,  243,   -1,   89,  243,   -1,   90,  243,   -1,   92,
  243,   -1,  146,    8,  243,   -1,  109,  390,   -1,  151,
  355,   -1,  146,  243,   -1,  460,  135,   -1,  165,  112,
   -1,  146,   79,   -1,  123,  390,   -1,  285,  322,   -1,
  286,  324,   -1,  287,  326,   -1,  288,  328,   -1,  289,
  330,   -1,  290,  330,   -1,  291,  332,   -1,  292,  332,
   -1,  293,  332,   -1,  294,  332,   -1,  295,  332,   -1,
  291,  333,   -1,  292,  333,   -1,  293,  333,   -1,  294,
  333,   -1,  295,  333,   -1,  296,  336,   -1,  297,  336,
   -1,  296,  335,   -1,  297,  335,   -1,  296,  337,   -1,
  297,  337,   -1,  296,  338,   -1,  297,  338,   -1,  298,
  341,   -1,  299,  341,   -1,  298,  342,   -1,  299,  342,
   -1,  300,  344,   -1,  301,  344,   -1,  302,  344,   -1,
  300,  345,   -1,  301,  345,   -1,  302,  345,   -1,  303,
  347,   -1,  304,  347,   -1,  303,  348,   -1,  304,  348,
   -1,  303,  349,   -1,  304,  349,   -1,  548,   28,   -1,
  696,  254,   -1,
};
#define YYFINAL 20
#ifndef YYDEBUG
#define YYDEBUG 0
#endif
#define YYMAXTOKEN 433
#if YYDEBUG
static char *yyname[] = {
"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"PC_IMPORT","PC_USING",
"PC_IDENTIFIERS","PC_ALIAS","PC_NAMESPACE","PC_CLASS","PC_ENUM","PC_UNION",
"PC_INTERFACE","PC_INHERITS","PC_IMPLEMENTS","PC_VIRTUAL","PC_NONVIRTUAL",
"PC_SETPLATFORMS","PC_LIKE","PC_AUTOINSTANCE","PC_BYCALL","PC_BYCLASS",
"PC_BYNAMESPACE","PC_BYCALLTO","PC_FPOINTER","PC_CONSTRUCTOR","PC_PUBLIC",
"PC_PROTECTED","PC_PRIVATE","PC_IPUBLIC","PC_IPROTECTED","PC_IPRIVATE",
"PC_STATIC","PC_CONST","PC_VOLATILE","PC_EXTERN","PC_FORCE","PC_FACTORY",
"PC_INTERACTIVE","PC_KEYWORD","PC_FINAL","PC_NEW","PC_OVERRIDE","PC_ABSTRACT",
"PC_PARAMS","PC_IN","PC_OUT","PC_INOUT","PC_REF","PC_EXTENSION","PC_ORDINARY",
"PC_STRUCT","PC_OPERATOR","PC_INDEXER","PC_PROPERTY","PC_GET","PC_EZOEICIT",
"PC_READONLY","PC_BLOCKTOFACTORYS","PC_EXCEPT","PC_SET","PC_RESUME","PC_BREAK",
"PC_CONTINUE","PC_SELECTOUTPUT","PC_WRITECODE","PC_IF","PC_ELSE","PC_WHILE",
"PC_DO","PC_FOR","PC_SWITCH","PC_CASE","PC_DEFAULT","PC_RETURN","PC_THROW",
"PC_TRY","PC_CATCH","PC_FINALLY","PC_STATIC_CAST","PC_DYNAMIC_CAST","PC_DELETE",
"PC_BOOL","PC_VOID","PC_OBJECT","PC_SBYTE","PC_SHORT","PC_INT","PC_LONG",
"PC_UNSIGNED","PC_BYTE","PC_USHORT","PC_UINT","PC_ULONG","PC_FLOAT","PC_DOUBLE",
"PC_DECIMAL","PC_CHAR","PC_ASCII_CHAR","PC_STRING","PC_ASCII_STRING","PC_TYPE",
"PC_BLOCK","PC_EXPRESSION","PC_EXPRESSIONLIST","PC_INAME","PC_STATEMENT",
"PC_SIZEOF","PC_TYPEOF","PC_GETTYPE","PC_EXEC","PC_IS","PC_IMPLICIT",
"USER_TYPE_NAME","OPEN_PARENTESIS","CLOSE_PARENTESIS","OPEN_LLAVE",
"CLOSE_LLAVE","OPEN_CORCHETE","CLOSE_CORCHETE","PUNTO_COMA","COMA","PUNTO",
"OP_COMILLA","OP_IGUAL","OP_MAYOR","OP_MENOR","OP_ADMIRACION","OP_CELDILLA",
"OP_PREGUNTA","OP_DOSPUNTOSDOBLE","OP_DOSPUNTOS","OP_IGUALIGUAL",
"OP_MENORIGUAL","OP_MAYORIGUAL","OP_ADMIRACIONIGUAL","OP_YY","OP_OO",
"OP_MASMAS","OP_MENOSMENOS","OP_MAS","OP_MENOS","OP_ASTERISCO","OP_DIVIDIDO",
"OP_Y","OP_O","OP_SOMBRERO","OP_PORCENTAJE","OP_SHIFTLEFT","OP_SHIFTRIGHT",
"OP_SHIFTRIGHT_JAVA","OP_MASIGUAL","OP_MENOSIGUAL","OP_ASTERISCOIGUAL",
"OP_DIVIDIDOIGUAL","OP_YIGUAL","OP_OIGUAL","OP_SOMBREROIGUAL",
"OP_PORCENTAJEIGUAL","OP_SHIFTLEFTIGUAL","OP_SHIFTRIGHTIGUAL",
"OP_SHIFTRIGHT_JAVA_IGUAL","OP_IGUALMAYOR","OP_MENOSMAYOR",
"OP_MENOSMAYORASTERISCO","OP_PUNTOASTERISCO","NULL_LITERAL",
"BOOLEAN_LITERAL_TRUE","BOOLEAN_LITERAL_FALSE","CHARACTER_LITERAL",
"STRING_LITERAL","INTEGER_LITERAL","FLOAT_LITERAL","DECIMAL_LITERAL",
"WHITE_SPACE","COMENTARIO_LARGO","COMENTARIO","IDENTIFICADOR","ERROR_LEXICO",
"MAL_CARACTER","ERROR_COMILLA",
};
static char *yyrule[] = {
"$accept : Compilation_Unit",
"Compilation_Unit : Document_Body",
"Document_Body : Document_Body_Member",
"Document_Body : Document_Body Document_Body_Member",
"Document_Body_Member : Import",
"Document_Body_Member : Using_Statement",
"Document_Body_Member : Namespace_Decl",
"Document_Body_Member : ClassFactory_Call",
"Document_Body_Member : Comments",
"Import : PC_IMPORT Import_Parameters PUNTO_COMA",
"Import : PC_IMPORT error PUNTO_COMA",
"Import_Parameters : STRING_LITERAL",
"Import_Parameters : Import_Parameters COMA STRING_LITERAL",
"Using_Statement : PC_USING PC_IDENTIFIERS Complete_Class_Name PUNTO_COMA",
"Using_Statement : PC_USING Complete_Class_Name PUNTO_COMA",
"Using_Statement : PC_USING error PUNTO_COMA",
"Namespace_Decl : PC_NAMESPACE Complete_Class_Name OPEN_LLAVE Namespace_Members CLOSE_LLAVE",
"Namespace_Decl : PC_NAMESPACE Complete_Class_Name OPEN_LLAVE CLOSE_LLAVE",
"Namespace_Decl : PC_NAMESPACE error OPEN_LLAVE",
"Namespace_Decl : PC_EXTENSION OPEN_LLAVE Namespace_Members CLOSE_LLAVE",
"Namespace_Decl : PC_ORDINARY OPEN_LLAVE Namespace_Members CLOSE_LLAVE",
"Namespace_Members : Namespace_Member",
"Namespace_Members : Namespace_Members Namespace_Member",
"Namespace_Member : Namespace_Decl",
"Namespace_Member : Type_Decl",
"Namespace_Member : Comments",
"Namespace_Member : ClassFactory_Call",
"Namespace_Member : error",
"Complete_Class_Name : IDENTIFICADOR",
"Complete_Class_Name : Complete_Class_Name OP_DOSPUNTOSDOBLE IDENTIFICADOR",
"Type_Decl : Class_Decl",
"Type_Decl : Enum_Decl",
"Enum_Decl : Storage_Mod_List PC_ENUM IDENTIFICADOR OPEN_LLAVE Enum_Members CLOSE_LLAVE",
"Enum_Decl : Storage_Mod_List PC_ENUM IDENTIFICADOR OP_DOSPUNTOS Simple_Type_Name OPEN_LLAVE Enum_Members CLOSE_LLAVE",
"Enum_Decl : PC_ENUM IDENTIFICADOR OPEN_LLAVE Enum_Members CLOSE_LLAVE",
"Enum_Decl : PC_ENUM IDENTIFICADOR OP_DOSPUNTOS Simple_Type_Name OPEN_LLAVE Enum_Members CLOSE_LLAVE",
"Enum_Members : Enum_Constant",
"Enum_Members : Enum_Members COMA Enum_Constant",
"Enum_Members : Comments",
"Enum_Constant : IDENTIFICADOR Enum_Initializer",
"Enum_Constant : IDENTIFICADOR",
"Enum_Initializer : OP_IGUAL Constant_Expression",
"Class_Type : PC_CLASS",
"Class_Type : PC_INTERFACE",
"Class_Type : PC_STRUCT",
"Class_Type : PC_UNION",
"Class_Decl : Storage_Mod_List Class_Type IDENTIFICADOR PC_INHERITS Base_List PC_IMPLEMENTS Implement_List OPEN_LLAVE Class_Decl_Block CLOSE_LLAVE",
"Class_Decl : Storage_Mod_List Class_Type IDENTIFICADOR PC_INHERITS Base_List OPEN_LLAVE Class_Decl_Block CLOSE_LLAVE",
"Class_Decl : Storage_Mod_List Class_Type IDENTIFICADOR PC_IMPLEMENTS Implement_List OPEN_LLAVE Class_Decl_Block CLOSE_LLAVE",
"Class_Decl : Storage_Mod_List Class_Type IDENTIFICADOR OPEN_LLAVE Class_Decl_Block CLOSE_LLAVE",
"Class_Decl : Class_Type IDENTIFICADOR PC_INHERITS Base_List PC_IMPLEMENTS Implement_List OPEN_LLAVE Class_Decl_Block CLOSE_LLAVE",
"Class_Decl : Class_Type IDENTIFICADOR PC_INHERITS Base_List OPEN_LLAVE Class_Decl_Block CLOSE_LLAVE",
"Class_Decl : Class_Type IDENTIFICADOR PC_IMPLEMENTS Implement_List OPEN_LLAVE Class_Decl_Block CLOSE_LLAVE",
"Class_Decl : Class_Type IDENTIFICADOR OPEN_LLAVE Class_Decl_Block CLOSE_LLAVE",
"Class_Decl : Class_Type IDENTIFICADOR OPEN_LLAVE CLOSE_LLAVE",
"Class_Decl : Class_Type IDENTIFICADOR PC_INHERITS Base_List OPEN_LLAVE CLOSE_LLAVE",
"Class_Decl : Class_Type IDENTIFICADOR PC_IMPLEMENTS Implement_List OPEN_LLAVE CLOSE_LLAVE",
"Class_Decl : Class_Type IDENTIFICADOR PC_INHERITS Base_List PC_IMPLEMENTS Implement_List OPEN_LLAVE CLOSE_LLAVE",
"Class_Decl : Storage_Mod_List Class_Type IDENTIFICADOR PC_INHERITS Base_List PC_IMPLEMENTS Implement_List OPEN_LLAVE CLOSE_LLAVE",
"Class_Decl : Storage_Mod_List Class_Type IDENTIFICADOR PC_INHERITS Base_List OPEN_LLAVE CLOSE_LLAVE",
"Class_Decl : Storage_Mod_List Class_Type IDENTIFICADOR PC_IMPLEMENTS Implement_List OPEN_LLAVE CLOSE_LLAVE",
"Class_Decl : Storage_Mod_List Class_Type IDENTIFICADOR OPEN_LLAVE CLOSE_LLAVE",
"Base_List : Base_Specifier",
"Base_List : Base_List COMA Base_Specifier",
"Base_Specifier : PC_NONVIRTUAL Access_Modifier Complete_Class_Name",
"Base_Specifier : Access_Modifier PC_NONVIRTUAL Complete_Class_Name",
"Base_Specifier : PC_NONVIRTUAL Complete_Class_Name",
"Base_Specifier : Access_Modifier Complete_Class_Name",
"Base_Specifier : Complete_Class_Name",
"Implement_List : Implement_Specifier",
"Implement_List : Implement_List COMA Implement_Specifier",
"Implement_Specifier : Access_Modifier Complete_Class_Name",
"Implement_Specifier : Complete_Class_Name",
"Class_Decl_Block : Class_Member_Decl",
"Class_Decl_Block : Class_Decl_Block Class_Member_Decl",
"Class_Member_Decl : Field_Decl",
"Class_Member_Decl : Function_Decl",
"Class_Member_Decl : Property_Decl",
"Class_Member_Decl : Type_Decl",
"Class_Member_Decl : Comments",
"Class_Member_Decl : error PUNTO_COMA",
"Class_Member_Decl : ClassFactory_Call",
"Class_Member_Decl : Access_Modifier OP_DOSPUNTOS",
"Class_Member_Decl : Autoinstance_Decl",
"Class_Member_Decl : SetPlatforms_Decl",
"SetPlatforms_Decl : PC_SETPLATFORMS OP_DOSPUNTOS SetPlatformList PUNTO_COMA",
"SetPlatformList : SetPlatform",
"SetPlatformList : SetPlatformList COMA SetPlatform",
"SetPlatform : STRING_LITERAL",
"SetPlatform : PC_LIKE STRING_LITERAL",
"Autoinstance_Decl : PC_AUTOINSTANCE OP_DOSPUNTOS Autoinstance_Type PUNTO_COMA",
"Autoinstance_Type : PC_BYCALL",
"Autoinstance_Type : PC_BYCLASS",
"Autoinstance_Type : PC_BYNAMESPACE",
"Autoinstance_Type : PC_BYCALLTO Identifier_List",
"Identifier_List : IDENTIFICADOR",
"Identifier_List : Identifier_List COMA IDENTIFICADOR",
"Access_Modifier : PC_PUBLIC",
"Access_Modifier : PC_PROTECTED",
"Access_Modifier : PC_PRIVATE",
"Access_Modifier : PC_IPUBLIC",
"Access_Modifier : PC_IPROTECTED",
"Access_Modifier : PC_IPRIVATE",
"Type_Declarator : Type_Declarator2",
"Type_Declarator : Storage_Mod_List Type_Declarator2",
"Type_Declarator2 : Type_Declarator3",
"Type_Declarator2 : Type_Declarator3 Pointer_And_Array_Mods",
"Type_Declarator2 : Explicit_Type",
"Type_Declarator3 : Simple_Type_Name",
"Type_Declarator3 : Complete_Class_Name",
"Pointer_And_Array_Mods : Array_Mods",
"Pointer_And_Array_Mods : Pointer_Mods",
"Pointer_And_Array_Mods : Pointer_Mods Array_Mods",
"Pointer_Mods : Pointer_Mod",
"Pointer_Mods : Pointer_Mods Pointer_Mod",
"Array_Mods : Array_Mod",
"Array_Mods : Array_Mods Array_Mod",
"Explicit_Type : PC_TYPEOF Type_Declarator3",
"Explicit_Type : PC_TYPEOF Derived_Type Type_Declarator3",
"Derived_Type : Array_Mod",
"Derived_Type : Pointer_Mod",
"Derived_Type : Derived_Type Array_Mod",
"Derived_Type : Derived_Type Pointer_Mod",
"Declarator_F : Complete_Class_Name",
"Declarator_F : PC_OPERATOR Operator_Sym",
"Declarator_F : PC_INDEXER",
"Declarator_F : Complete_Class_Name OP_DOSPUNTOSDOBLE PC_INDEXER",
"Declarator_F : OP_CELDILLA Complete_Class_Name",
"Initializer : OP_IGUAL Variable_Initializer",
"Initializer : OPEN_PARENTESIS Expression_List CLOSE_PARENTESIS",
"Variable_Initializer : Expression",
"Variable_Initializer : Complex_Initializer",
"Complex_Initializer : OPEN_LLAVE Initializer_List CLOSE_LLAVE",
"Complex_Initializer : OPEN_LLAVE Initializer_List COMA CLOSE_LLAVE",
"Complex_Initializer : OPEN_LLAVE CLOSE_LLAVE",
"Initializer_List :",
"Initializer_List : Variable_Initializer",
"Initializer_List : Initializer_List COMA Variable_Initializer",
"Pointer_Mod : OP_ASTERISCO",
"Pointer_Mod : OP_SOMBRERO",
"Pointer_Mod : OP_ASTERISCO Pointer_Modifier_List",
"Pointer_Mod : Complete_Class_Name OP_DOSPUNTOSDOBLE OP_ASTERISCO",
"Pointer_Mod : Complete_Class_Name OP_DOSPUNTOSDOBLE OP_ASTERISCO Pointer_Modifier_List",
"Pointer_Modifier_List : Pointer_Modifier",
"Pointer_Modifier_List : Pointer_Modifier Pointer_Modifier_List",
"Pointer_Modifier : PC_CONST",
"Pointer_Modifier : PC_VOLATILE",
"Pointer_Modifier : PC_REF",
"Array_Mod : OPEN_CORCHETE CLOSE_CORCHETE",
"Array_Mod : OPEN_CORCHETE Expression CLOSE_CORCHETE",
"Parameters_Declarator_List : Parameter_Declarator",
"Parameters_Declarator_List : Parameters_Declarator_List COMA Parameter_Declarator",
"Parameter_Declarator : Type_Declarator Declarator",
"Storage_Mod_List : Storage_Mod",
"Storage_Mod_List : Storage_Mod_List Storage_Mod",
"Storage_Mod : Access_Modifier",
"Storage_Mod : PC_STATIC",
"Storage_Mod : PC_CONST",
"Storage_Mod : PC_VOLATILE",
"Storage_Mod : PC_EXTERN",
"Storage_Mod : PC_EXTENSION",
"Storage_Mod : PC_FACTORY",
"Storage_Mod : PC_INTERACTIVE",
"Storage_Mod : PC_KEYWORD",
"Storage_Mod : PC_FINAL",
"Storage_Mod : PC_NEW",
"Storage_Mod : PC_OVERRIDE",
"Storage_Mod : PC_VIRTUAL",
"Storage_Mod : PC_NONVIRTUAL",
"Storage_Mod : PC_EXEC",
"Storage_Mod : PC_FPOINTER",
"Storage_Mod : PC_FORCE",
"Storage_Mod : PC_ABSTRACT",
"Storage_Mod : PC_IN",
"Storage_Mod : PC_OUT",
"Storage_Mod : PC_INOUT",
"Storage_Mod : PC_PARAMS",
"Storage_Mod : PC_INAME",
"Storage_Mod : PC_EXPRESSION",
"Block_Or_PC : Block",
"Block_Or_PC : PUNTO_COMA",
"Function_Decl : Type_Declarator Declarator_F OPEN_PARENTESIS Parameters_Declarator_List CLOSE_PARENTESIS Block_Or_PC",
"Function_Decl : Type_Declarator Declarator_F OPEN_PARENTESIS CLOSE_PARENTESIS Block_Or_PC",
"Function_Decl : Type_Declarator Declarator_F OPEN_PARENTESIS Parameters_Declarator_List CLOSE_PARENTESIS Base_Initializers Block_Or_PC",
"Function_Decl : Type_Declarator Declarator_F OPEN_PARENTESIS CLOSE_PARENTESIS Base_Initializers Block_Or_PC",
"Function_Decl : Storage_Mod_List Declarator_F OPEN_PARENTESIS CLOSE_PARENTESIS Base_Initializers Block_Or_PC",
"Function_Decl : Storage_Mod_List Declarator_F OPEN_PARENTESIS Parameters_Declarator_List CLOSE_PARENTESIS Base_Initializers Block_Or_PC",
"Function_Decl : Declarator_F OPEN_PARENTESIS CLOSE_PARENTESIS Base_Initializers Block_Or_PC",
"Function_Decl : Declarator_F OPEN_PARENTESIS Parameters_Declarator_List CLOSE_PARENTESIS Base_Initializers Block_Or_PC",
"Function_Decl : Storage_Mod_List Declarator_F OPEN_PARENTESIS CLOSE_PARENTESIS Block_Or_PC",
"Function_Decl : Storage_Mod_List Declarator_F OPEN_PARENTESIS Parameters_Declarator_List CLOSE_PARENTESIS Block_Or_PC",
"Function_Decl : Declarator_F OPEN_PARENTESIS CLOSE_PARENTESIS Block_Or_PC",
"Function_Decl : Declarator_F OPEN_PARENTESIS Parameters_Declarator_List CLOSE_PARENTESIS Block_Or_PC",
"Field_Decl : Type_Declarator Declarator_List PUNTO_COMA",
"Base_Initializers : OP_DOSPUNTOS Base_Initializers_2",
"Base_Initializers_2 : Base_Initializer",
"Base_Initializers_2 : Base_Initializers_2 COMA Base_Initializer",
"Base_Initializer : Complete_Class_Name OPEN_PARENTESIS Expression_List CLOSE_PARENTESIS",
"Base_Initializer : Complete_Class_Name OPEN_PARENTESIS CLOSE_PARENTESIS",
"Property_Decl : Type_Declarator PC_PROPERTY Complete_Class_Name Block",
"Declarator : IDENTIFICADOR",
"Declarator : IDENTIFICADOR Initializer",
"Declarator_List : Declarator",
"Declarator_List : Declarator_List COMA Declarator",
"Block : OPEN_LLAVE Block_Statements CLOSE_LLAVE",
"Block : OPEN_LLAVE CLOSE_LLAVE",
"Get_Block : PC_GET Block",
"Get_Block : PC_GET PUNTO_COMA",
"Set_Block : PC_SET Block",
"Set_Block : PC_SET PUNTO_COMA",
"Block_Statements : Block_Statement",
"Block_Statements : Block_Statements Block_Statement",
"Comments : COMENTARIO",
"Comments : Comments COMENTARIO",
"Block_Statement : Local_Variable_Declaration_Statement",
"Block_Statement : Statement",
"WC_Block : OPEN_LLAVE WC_Block_Content CLOSE_LLAVE",
"WC_Block : OPEN_LLAVE CLOSE_LLAVE",
"WC_Block2 : OPEN_LLAVE OP_PORCENTAJE WC_Block_Content2 OP_PORCENTAJE CLOSE_LLAVE",
"WC_Block_Content : Comments Type_Decl",
"WC_Block_Content : Block_Statements",
"WC_Block_Content : Type_Decl",
"WC_Block_Content : Compilation_Unit",
"WC_Block_Content2 : Class_Decl_Block",
"Local_Variable_Declaration_Statement : Local_Variable_Declaration PUNTO_COMA",
"Local_Variable_Declaration : Type_Declarator Declarator_List",
"Statement : Block",
"Statement : Empty_Statement",
"Statement : Expression_Statement",
"Statement : Switch_Statement",
"Statement : Do_Statement",
"Statement : Break_Statement",
"Statement : Continue_Statement",
"Statement : Return_Statement",
"Statement : Throw_Statement",
"Statement : Try_Statement",
"Statement : Labeled_Statement",
"Statement : If_Then_Statement",
"Statement : While_Statement",
"Statement : For_Statement",
"Statement : SetHandler_Statement",
"Statement : Resume_Statement",
"Statement : Get_Or_Set_Block",
"Statement : Comments",
"Statement : error PUNTO_COMA",
"SetHandler_Statement : PC_SET IDENTIFICADOR IDENTIFICADOR IDENTIFICADOR PUNTO_COMA",
"SetHandler_Statement : PC_SET error PUNTO_COMA",
"Resume_Statement : PC_RESUME PUNTO_COMA",
"Resume_Statement : PC_RESUME IDENTIFICADOR PUNTO_COMA",
"Get_Or_Set_Block : Get_Block",
"Get_Or_Set_Block : Set_Block",
"Get_Or_Set_Block : Access_Modifier Get_Block",
"Get_Or_Set_Block : Access_Modifier Set_Block",
"Expression_Statement : Expression PUNTO_COMA",
"If_Then_Statement : PC_IF OPEN_PARENTESIS Expression CLOSE_PARENTESIS Statement",
"If_Then_Statement : PC_IF OPEN_PARENTESIS Expression CLOSE_PARENTESIS Statement PC_ELSE Statement",
"While_Statement : PC_WHILE OPEN_PARENTESIS Expression CLOSE_PARENTESIS Statement",
"Do_Statement : PC_DO Statement PC_WHILE OPEN_PARENTESIS Expression CLOSE_PARENTESIS PUNTO_COMA",
"For_Statement : PC_FOR OPEN_PARENTESIS For_Init PUNTO_COMA Expression PUNTO_COMA For_Update CLOSE_PARENTESIS Statement",
"For_Statement : PC_FOR OPEN_PARENTESIS For_Init PC_IN Expression CLOSE_PARENTESIS Statement",
"For_Statement : PC_FOR OPEN_PARENTESIS PUNTO_COMA Expression PUNTO_COMA For_Update CLOSE_PARENTESIS Statement",
"For_Statement : PC_FOR OPEN_PARENTESIS For_Init PUNTO_COMA PUNTO_COMA For_Update CLOSE_PARENTESIS Statement",
"For_Statement : PC_FOR OPEN_PARENTESIS For_Init PUNTO_COMA Expression PUNTO_COMA CLOSE_PARENTESIS Statement",
"For_Statement : PC_FOR OPEN_PARENTESIS PUNTO_COMA Expression PUNTO_COMA CLOSE_PARENTESIS Statement",
"For_Statement : PC_FOR OPEN_PARENTESIS For_Init PUNTO_COMA PUNTO_COMA CLOSE_PARENTESIS Statement",
"For_Statement : PC_FOR OPEN_PARENTESIS PUNTO_COMA PUNTO_COMA For_Update CLOSE_PARENTESIS Statement",
"For_Statement : PC_FOR OPEN_PARENTESIS PUNTO_COMA PUNTO_COMA CLOSE_PARENTESIS Statement",
"For_Init : Expression_List",
"For_Init : Local_Variable_Declaration",
"For_Update : Expression_List",
"Empty_Statement : PUNTO_COMA",
"Labeled_Statement : IDENTIFICADOR OP_DOSPUNTOS Statement",
"Switch_Statement : PC_SWITCH OPEN_PARENTESIS Expression CLOSE_PARENTESIS Switch_Block",
"Switch_Statement : PC_SWITCH error",
"Switch_Block : OPEN_LLAVE Switch_Block_Statement_Groups Switch_Labels CLOSE_LLAVE",
"Switch_Block : OPEN_LLAVE Switch_Block_Statement_Groups CLOSE_LLAVE",
"Switch_Block : OPEN_LLAVE Switch_Labels CLOSE_LLAVE",
"Switch_Block : OPEN_LLAVE CLOSE_LLAVE",
"Switch_Block_Statement_Groups : Switch_Block_Statement_Group",
"Switch_Block_Statement_Groups : Switch_Block_Statement_Groups Switch_Block_Statement_Group",
"Switch_Block_Statement_Group : Switch_Labels Block_Statements",
"Switch_Labels : Switch_Label",
"Switch_Labels : Switch_Labels Switch_Label",
"Switch_Label : PC_CASE Expression OP_DOSPUNTOS",
"Switch_Label : PC_DEFAULT OP_DOSPUNTOS",
"Break_Statement : PC_BREAK IDENTIFICADOR PUNTO_COMA",
"Break_Statement : PC_BREAK PUNTO_COMA",
"Continue_Statement : PC_CONTINUE IDENTIFICADOR PUNTO_COMA",
"Continue_Statement : PC_CONTINUE PUNTO_COMA",
"Return_Statement : PC_RETURN Expression PUNTO_COMA",
"Return_Statement : PC_RETURN PUNTO_COMA",
"Throw_Statement : PC_THROW PUNTO_COMA",
"Throw_Statement : PC_THROW Expression PUNTO_COMA",
"Throw_Statement : PC_THROW error",
"Try_Statement : PC_TRY Block Catches",
"Try_Statement : PC_TRY Block Catches Finally",
"Try_Statement : PC_TRY Block Finally",
"Try_Statement : PC_TRY error",
"Catches : Catch_Clause",
"Catches : Catches Catch_Clause",
"Catch_Clause : PC_CATCH OPEN_PARENTESIS For_Init CLOSE_PARENTESIS Block",
"Catch_Clause : PC_CATCH error",
"Finally : PC_FINALLY Block",
"Constant_Expression : Expression",
"Expression_List : Expression",
"Expression_List : Expression_List COMA Expression",
"Expression_List : Expression_List error",
"Expression_List : Expression_List COMA error",
"Parenthesized_Exp : OPEN_PARENTESIS Expression CLOSE_PARENTESIS",
"Complex_Expression_List : Expression_Or_Punctuactor",
"Complex_Expression_List : Complex_Expression_List Expression_Or_Punctuactor",
"Expression_Or_Punctuactor : Expression_List",
"Expression_Or_Punctuactor : PUNTO_COMA",
"Expression_Or_Punctuactor : OP_DOSPUNTOS",
"Expression : Argument_Exp",
"Argument_Exp : Assingment_Exp",
"Argument_Exp : Assingment_Exp OP_IGUALMAYOR Argument_Exp",
"Assingment_Exp : Conditional_Exp",
"Assingment_Exp : Unary_Exp Assing_Operator Assingment_Exp",
"Conditional_Exp : Logical_OR_Exp",
"Conditional_Exp : Logical_OR_Exp OP_PREGUNTA Expression OP_DOSPUNTOS Conditional_Exp",
"Logical_OR_Exp : Logical_AND_Exp",
"Logical_OR_Exp : Logical_OR_Exp OP_OO Logical_AND_Exp",
"Logical_AND_Exp : Inclusive_OR_Exp",
"Logical_AND_Exp : Logical_AND_Exp OP_YY Inclusive_OR_Exp",
"Inclusive_OR_Exp : Exclusive_OR_Exp",
"Inclusive_OR_Exp : Inclusive_OR_Exp OP_O Exclusive_OR_Exp",
"Exclusive_OR_Exp : And_Expression",
"Exclusive_OR_Exp : Exclusive_OR_Exp OP_SOMBRERO And_Expression",
"And_Expression : Equality_Exp",
"And_Expression : And_Expression OP_Y Equality_Exp",
"Equality_Exp : Relational_Exp",
"Equality_Exp : Equality_Exp OP_IGUALIGUAL Relational_Exp",
"Equality_Exp : Equality_Exp OP_ADMIRACIONIGUAL Relational_Exp",
"Relational_Exp : Shift_Exp",
"Relational_Exp : Relational_Exp OP_MENOR Shift_Exp",
"Relational_Exp : Relational_Exp OP_MAYOR Shift_Exp",
"Relational_Exp : Relational_Exp OP_MENORIGUAL Shift_Exp",
"Relational_Exp : Relational_Exp OP_MAYORIGUAL Shift_Exp",
"Relational_Exp : Relational_Exp PC_IS Type_Declarator",
"Shift_Exp : Additive_Exp",
"Shift_Exp : Shift_Exp OP_SHIFTLEFT Additive_Exp",
"Shift_Exp : Shift_Exp OP_SHIFTRIGHT Additive_Exp",
"Additive_Exp : Multiplicative_Exp",
"Additive_Exp : Additive_Exp OP_MAS Multiplicative_Exp",
"Additive_Exp : Additive_Exp OP_MENOS Multiplicative_Exp",
"Multiplicative_Exp : PM_Access_Exp",
"Multiplicative_Exp : Multiplicative_Exp OP_ASTERISCO PM_Access_Exp",
"Multiplicative_Exp : Multiplicative_Exp OP_DIVIDIDO PM_Access_Exp",
"Multiplicative_Exp : Multiplicative_Exp OP_PORCENTAJE PM_Access_Exp",
"PM_Access_Exp : Cast_Exp",
"PM_Access_Exp : PM_Access_Exp OP_PUNTOASTERISCO Cast_Exp",
"PM_Access_Exp : PM_Access_Exp OP_MENOSMAYORASTERISCO Cast_Exp",
"Cast_Exp : Unary_Exp",
"Cast_Exp : OPEN_PARENTESIS Type_Declarator CLOSE_PARENTESIS Cast_Exp",
"Unary_Exp : Postfix_Exp",
"Unary_Exp : OP_MASMAS Unary_Exp",
"Unary_Exp : OP_MENOSMENOS Unary_Exp",
"Unary_Exp : Unary_Operator Cast_Exp",
"Unary_Exp : PC_SIZEOF OPEN_PARENTESIS Unary_Exp CLOSE_PARENTESIS",
"Unary_Exp : PC_SIZEOF OPEN_PARENTESIS Type_Declarator CLOSE_PARENTESIS",
"Unary_Exp : Deallocation_Exp",
"Unary_Exp : PC_GETTYPE OPEN_PARENTESIS Type_Declarator CLOSE_PARENTESIS",
"Unary_Exp : PC_TYPEOF OPEN_PARENTESIS Expression CLOSE_PARENTESIS",
"Unary_Exp : PC_TYPEOF OPEN_PARENTESIS Type_Declarator CLOSE_PARENTESIS",
"Writecode_Expression : PC_WRITECODE WC_Block",
"Writecode_Expression : PC_WRITECODE OPEN_PARENTESIS Expression CLOSE_PARENTESIS",
"Writecode_Expression : PC_WRITECODE WC_Block2",
"Writecode_Expression : PC_WRITECODE error",
"Postfix_Exp : Primary_Exp",
"Postfix_Exp : Writecode_Expression",
"Postfix_Exp : Postfix_Exp OPEN_PARENTESIS OP_COMILLA Complex_Expression_List OP_COMILLA CLOSE_PARENTESIS",
"Postfix_Exp : Postfix_Exp OPEN_CORCHETE Expression_List CLOSE_CORCHETE",
"Postfix_Exp : Postfix_Exp OPEN_PARENTESIS Expression_List CLOSE_PARENTESIS",
"Postfix_Exp : Postfix_Exp OPEN_PARENTESIS CLOSE_PARENTESIS",
"Postfix_Exp : Postfix_Exp Block",
"Postfix_Exp : Postfix_Exp PUNTO Complete_Class_Name",
"Postfix_Exp : Postfix_Exp OP_MENOSMAYOR Complete_Class_Name",
"Postfix_Exp : Postfix_Exp OP_MASMAS",
"Postfix_Exp : Postfix_Exp OP_MENOSMENOS",
"Allocation_Exp : PC_NEW New_Placement Type_Declarator Initializer",
"Allocation_Exp : PC_NEW Type_Declarator Initializer",
"Allocation_Exp : PC_NEW New_Placement Type_Declarator",
"Allocation_Exp : PC_NEW Type_Declarator",
"Allocation_Exp : PC_NEW New_Placement Type_Declarator OPEN_PARENTESIS CLOSE_PARENTESIS",
"Allocation_Exp : PC_NEW Type_Declarator OPEN_PARENTESIS CLOSE_PARENTESIS",
"New_Placement : OPEN_PARENTESIS Expression_List CLOSE_PARENTESIS",
"Deallocation_Exp : PC_DELETE Cast_Exp",
"Primary_Exp : Literal",
"Primary_Exp : Allocation_Exp",
"Primary_Exp : Complete_Class_Name",
"Primary_Exp : Parenthesized_Exp",
"Simple_Type_Name : Simple_Type_Name_Word",
"Simple_Type_Name : Simple_Type_Name_Word Simple_Type_Name_Word",
"Simple_Type_Name_Word : PC_VOID",
"Simple_Type_Name_Word : PC_SBYTE",
"Simple_Type_Name_Word : PC_SHORT",
"Simple_Type_Name_Word : PC_INT",
"Simple_Type_Name_Word : PC_LONG",
"Simple_Type_Name_Word : PC_UNSIGNED",
"Simple_Type_Name_Word : PC_BYTE",
"Simple_Type_Name_Word : PC_USHORT",
"Simple_Type_Name_Word : PC_ULONG",
"Simple_Type_Name_Word : PC_FLOAT",
"Simple_Type_Name_Word : PC_DOUBLE",
"Simple_Type_Name_Word : PC_DECIMAL",
"Simple_Type_Name_Word : PC_CHAR",
"Simple_Type_Name_Word : PC_ASCII_CHAR",
"Simple_Type_Name_Word : PC_STRING",
"Simple_Type_Name_Word : PC_ASCII_STRING",
"Simple_Type_Name_Word : PC_TYPE",
"Simple_Type_Name_Word : PC_BLOCK",
"Simple_Type_Name_Word : PC_BOOL",
"Simple_Type_Name_Word : PC_OBJECT",
"Literal : STRING_LITERAL",
"Literal : CHARACTER_LITERAL",
"Literal : BOOLEAN_LITERAL_TRUE",
"Literal : BOOLEAN_LITERAL_FALSE",
"Literal : INTEGER_LITERAL",
"Literal : FLOAT_LITERAL",
"Literal : DECIMAL_LITERAL",
"Literal : NULL_LITERAL",
"Assing_Operator : OP_IGUAL",
"Assing_Operator : OP_MASIGUAL",
"Assing_Operator : OP_MENOSIGUAL",
"Assing_Operator : OP_ASTERISCOIGUAL",
"Assing_Operator : OP_DIVIDIDOIGUAL",
"Assing_Operator : OP_YIGUAL",
"Assing_Operator : OP_OIGUAL",
"Assing_Operator : OP_SOMBREROIGUAL",
"Assing_Operator : OP_PORCENTAJEIGUAL",
"Assing_Operator : OP_SHIFTLEFTIGUAL",
"Assing_Operator : OP_SHIFTRIGHTIGUAL",
"Unary_Operator : OP_MENOS",
"Unary_Operator : OP_ADMIRACION",
"Unary_Operator : OP_Y",
"Unary_Operator : OP_ASTERISCO",
"Unary_Operator : OP_CELDILLA",
"Operator_Sym : OP_IGUAL",
"Operator_Sym : OP_MAYOR",
"Operator_Sym : OP_MENOR",
"Operator_Sym : OP_ADMIRACION",
"Operator_Sym : OP_CELDILLA",
"Operator_Sym : OP_PREGUNTA",
"Operator_Sym : OP_IGUALIGUAL",
"Operator_Sym : OP_MENORIGUAL",
"Operator_Sym : OP_MAYORIGUAL",
"Operator_Sym : OP_ADMIRACIONIGUAL",
"Operator_Sym : OP_YY",
"Operator_Sym : OP_OO",
"Operator_Sym : OP_MASMAS",
"Operator_Sym : OP_MENOSMENOS",
"Operator_Sym : OP_MAS",
"Operator_Sym : OP_MENOS",
"Operator_Sym : OP_ASTERISCO",
"Operator_Sym : OP_DIVIDIDO",
"Operator_Sym : OP_Y",
"Operator_Sym : OP_O",
"Operator_Sym : OP_SOMBRERO",
"Operator_Sym : OP_PORCENTAJE",
"Operator_Sym : OP_SHIFTLEFT",
"Operator_Sym : OP_SHIFTRIGHT",
"Operator_Sym : OP_MASIGUAL",
"Operator_Sym : OP_MENOSIGUAL",
"Operator_Sym : OP_ASTERISCOIGUAL",
"Operator_Sym : OP_DIVIDIDOIGUAL",
"Operator_Sym : OP_YIGUAL",
"Operator_Sym : OP_OIGUAL",
"Operator_Sym : OP_SOMBREROIGUAL",
"Operator_Sym : OP_PORCENTAJEIGUAL",
"Operator_Sym : OP_SHIFTLEFTIGUAL",
"Operator_Sym : OP_SHIFTRIGHTIGUAL",
"Operator_Sym : OP_MENOSMAYOR",
"Operator_Sym : OP_MENOSMAYORASTERISCO",
"Operator_Sym : PC_NEW",
"Operator_Sym : PC_DELETE",
"Operator_Sym : IDENTIFICADOR",
"ClassFactory_Call : Postfix_Exp PUNTO_COMA",
"ClassFactory_Call : OP_DOSPUNTOSDOBLE Postfix_Exp PUNTO_COMA",
};
#endif
#line 42 "btyaccpa.ske"

//
// YYPOSN is user-defined text position type.
//
#ifndef YYPOSN
#define YYPOSN int
#endif

#ifdef YYREDUCEPOSNFUNC
#define YYCALLREDUCEPOSN(e)   \
	if(reduce_posn) {     \
	  YYREDUCEPOSNFUNC(yyps->pos, &(yyps->psp)[1-yym], &(yyps->vsp)[1-yym], \
			   yym, yyps->psp - yyps->ps, yychar, yyposn, e);       \
	  reduce_posn = 0;    \
	}

#ifndef YYCALLREDUCEPOSNARG
#define YYCALLREDUCEPOSNARG yyps->val
#endif


#define YYPOSNARG(n) ((yyps->psp)[1-yym+(n)-1])
#define YYPOSNOUT    (yyps->pos)
#endif

// If delete function is not defined by the user, do not deletions.
#ifndef YYDELETEVAL
#define YYDELETEVAL(v) 
#endif

// If delete function is not defined by the user, do not deletions.
#ifndef YYDELETEPOSN
#define YYDELETEPOSN(v) 
#endif

#define yyclearin (yychar=(-1))

#define yyerrok (yyps->errflag=0)

#ifndef YYSTACKGROWTH
#define YYSTACKGROWTH 16
#endif

#ifndef YYDEFSTACKSIZE
#define YYDEFSTACKSIZE 12
#endif

#ifdef YYDEBUG
int yydebug;
#endif

int yynerrs;

/* These value/posn are taken from the lexer */
YYSTYPE yylval;
YYPOSN  yyposn;

/* These value/posn of the root non-terminal are returned to the caller */
YYSTYPE yyretlval;
YYPOSN  yyretposn;

#define YYABORT  goto yyabort
#define YYACCEPT goto yyaccept
#define YYERROR  goto yyerrlab
#define YYVALID         do { if (yyps->save)          goto yyvalid; } while(0)
#define YYVALID_NESTED  do { if (yyps->save && \
                                 yyps->save->save==0) goto yyvalid; } while(0)

struct yyparsestate {
  yyparsestate *save;        // Previously saved parser state
  int           state;
  int           errflag;
  Yshort       *ssp;         // state stack pointer
  YYSTYPE      *vsp;         // value stack pointer
  YYPOSN       *psp;         // position stack pointer
  YYSTYPE       val;         // value as returned by actions
  YYPOSN        pos;         // position as returned by universal action
  Yshort       *ss;          // state stack base
  YYSTYPE      *vs;          // values stack base
  YYPOSN       *ps;          // position stack base
  int           lexeme;      // index of the conflict lexeme in the lexical queue
  unsigned int  stacksize;   // current maximum stack size
  Yshort        ctry;        // index in yyctable[] for this conflict
};

// Current parser state
static yyparsestate *yyps=0;

// yypath!=NULL: do the full parse, starting at *yypath parser state.
static yyparsestate *yypath=0;

// Base of the lexical value queue
static YYSTYPE *yylvals=0;

// Current posistion at lexical value queue
static YYSTYPE *yylvp=0;

// End position of lexical value queue
static YYSTYPE *yylve=0;

// The last allocated position at the lexical value queue
static YYSTYPE *yylvlim=0;

// Base of the lexical position queue
static YYPOSN *yylpsns=0;

// Current posistion at lexical position queue
static YYPOSN *yylpp=0;

// End position of lexical position queue
static YYPOSN *yylpe=0;

// The last allocated position at the lexical position queue
static YYPOSN *yylplim=0;

// Current position at lexical token queue
static Yshort *yylexp=0;

static Yshort *yylexemes=0;

//
// For use in generated program
//
#define yytrial (yyps->save)
#define yyvsp   (yyps->vsp)
#define yyval   (yyps->val)
#define yydepth (yyps->ssp - yyps->ss)


//
// Local prototypes.
//
int yyparse(void);

int  YYLex1();
int  yyexpand();
void YYSCopy(YYSTYPE *to, YYSTYPE *from, int size);
void YYPCopy(YYPOSN  *to, YYPOSN  *from, int size);
void YYMoreStack(yyparsestate *yyps);
yyparsestate *YYNewState(int size);
void YYFreeState(yyparsestate *p);


#line 3572 "layerd_dpp_parser_beta.y"


/////////////////////////////////////////////////////////////////////////////
// programs section

#include "layerd_dpp_parser_rutines.cpp"
#line 4735 "layerd_dpp_parser_beta_tab.c"
#line 186 "btyaccpa.ske"


//
// Parser function
//
int yyparse() {
  int yym, yyn, yystate, yychar, yynewerrflag;
  yyparsestate *yyerrctx = NULL;
  int reduce_posn;

#if YYDEBUG
  char *yys;
  
  if ((yys = getenv("YYDEBUG"))) {
    yyn = *yys;
    if (yyn >= '0' && yyn <= '9')
      yydebug = yyn - '0'; 
  }
#endif
  
  yyps = YYNewState(YYDEFSTACKSIZE);
  yyps->save = 0;
  yynerrs = 0;
  yyps->errflag = 0;
  yychar = (-1);
  
  yyps->ssp = yyps->ss;
  yyps->vsp = yyps->vs;
  yyps->psp = yyps->ps;
  *(yyps->ssp) = yystate = 0;
  

  //
  // Main parsing loop
  //
 yyloop:
  if ((yyn = yydefred[yystate])) {
    goto yyreduce;
  }

  //
  // Read one token
  //
  if (yychar < 0) {
    if ((yychar = YYLex1()) < 0) yychar = 0;
#if YYDEBUG
    if (yydebug) {
      yys = 0;
      if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
      if (!yys) yys = "illegal-symbol";
      printf("yydebug[%d,%d]: state %d, reading %d (%s)", 
	     yydepth, (int)yytrial, yystate, yychar, yys);
#ifdef YYDBPR
      printf("<");
      YYDBPR(yylval);
      printf(">");
#endif
      printf("\n"); 
    }
#endif
  }

  //
  // Do we have a conflict?
  //
  if ((yyn = yycindex[yystate]) &&
      (yyn += yychar) >= 0 &&
      yyn <= YYTABLESIZE &&
      yycheck[yyn] == yychar) {
    int ctry;

    if (yypath) {
#if YYDEBUG
      if (yydebug) {
        printf("yydebug[%d,%d]: CONFLICT in state %d: following successful trial parse\n", 
	       yydepth, (int)yytrial, yystate);
      }
#endif
      // Switch to the next conflict context
      yyparsestate *save = yypath;
      yypath = save->save;
      ctry = save->ctry;
      if (save->state != yystate) 
        goto yyabort;
      YYFreeState(save); 

    } else {

#if YYDEBUG
      if (yydebug) {
        printf("yydebug[%d,%d]: CONFLICT in state %d. ", 
	       yydepth, (int)yytrial, yystate);
        if(yyps->save) {
          printf("ALREADY in conflict. Continue trial parse.");
        } else {
          printf("Start trial parse.");
        }
        printf("\n");
      }
#endif
      yyparsestate *save = YYNewState(yyps->ssp - yyps->ss);
      save->save    = yyps->save;
      save->state   = yystate;
      save->errflag = yyps->errflag;
      save->ssp     = save->ss + (yyps->ssp - yyps->ss);
      save->vsp     = save->vs + (yyps->vsp - yyps->vs);
      save->psp     = save->ps + (yyps->psp - yyps->ps);
      memcpy (save->ss, yyps->ss, (yyps->ssp - yyps->ss + 1)*sizeof(Yshort));
      YYSCopy(save->vs, yyps->vs, (yyps->ssp - yyps->ss + 1));
      YYPCopy(save->ps, yyps->ps, (yyps->ssp - yyps->ss + 1));
      ctry = yytable[yyn];
      if (yyctable[ctry] == -1) {
#if YYDEBUG
        if (yydebug && yychar >= 0)
          printf("yydebug[%d]: backtracking 1 token\n", 
		 (int)yytrial);
#endif
        ctry++; 
      }
      save->ctry = ctry;
      if (!yyps->save) {
        // If this is a first conflict in the stack, start saving lexemes
        if (!yylexemes) {
          yylexemes = new Yshort[YYSTACKGROWTH];
          yylvals = new YYSTYPE[YYSTACKGROWTH];
          yylvlim = yylvals + YYSTACKGROWTH; 
          yylpsns = new YYPOSN[YYSTACKGROWTH];
          yylplim = yylpsns + YYSTACKGROWTH; 
        }
        if (yylvp == yylve) {
          yylvp = yylve = yylvals;
	  yylpp = yylpe = yylpsns;
          yylexp = yylexemes;
          if (yychar >= 0) {
            *yylve++ = yylval;
            *yylpe++ = yyposn;
            *yylexp = yychar;
            yychar = -1; 
          } 
        } 
      }
      if (yychar >= 0) {
        yylvp--, yylpp--, yylexp--;
        yychar = -1; 
      }
      save->lexeme = yylvp - yylvals;
      yyps->save = save; 
    }
    if (yytable[yyn] == ctry) {
#if YYDEBUG
      if (yydebug)
        printf("yydebug[%d,%d]: state %d, shifting to state %d\n",
               yydepth, (int)yytrial, yystate, yyctable[ctry]);
#endif
      if (yychar < 0)
        yylvp++, yylpp++, yylexp++;
      yychar = -1;
      if (yyps->errflag > 0) --yyps->errflag;
      yystate = yyctable[ctry];
      goto yyshift; 
    } else {
      yyn = yyctable[ctry];
      goto yyreduce; 
    } 
  }

  //
  // Is action a shift?
  //
  if ((yyn = yysindex[yystate]) &&
      (yyn += yychar) >= 0 &&
      yyn <= YYTABLESIZE &&
      yycheck[yyn] == yychar) {
#if YYDEBUG
    if (yydebug)
      printf("yydebug[%d,%d]: state %d, shifting to state %d\n",
             yydepth, (int)yytrial, yystate, yytable[yyn]);
#endif
    yychar = (-1);
    if (yyps->errflag > 0)  --yyps->errflag;
    yystate = yytable[yyn];
  yyshift:
    if (yyps->ssp >= yyps->ss + yyps->stacksize - 1) {
      YYMoreStack(yyps);
    }
    *++(yyps->ssp) = yystate;
    *++(yyps->vsp) = yylval;
    *++(yyps->psp) = yyposn;
    goto yyloop;
  }
  if ((yyn = yyrindex[yystate]) &&
      (yyn += yychar) >= 0 &&
      yyn <= YYTABLESIZE &&
      yycheck[yyn] == yychar) {
    yyn = yytable[yyn];
    goto yyreduce;
  }

  //
  // Action: error
  //
  if (yyps->errflag) goto yyinrecovery;
  yynewerrflag = 1;
  goto yyerrhandler;
yyerrlab:
  yynewerrflag = 0;
yyerrhandler:
  while (yyps->save) { 
    int ctry; 
    yyparsestate *save = yyps->save;
#if YYDEBUG
    if (yydebug)
      printf("yydebug[%d,%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n",
             yydepth, (int)yytrial, yystate, yyps->save->state, yylvp - yylvals - yyps->save->lexeme);
#endif
    // Memorize most forward-looking error state in case
    // it's really an error.
    if(yyerrctx==NULL || yyerrctx->lexeme<yylvp-yylvals) {
      // Free old saved error context state
      if(yyerrctx) YYFreeState(yyerrctx);
      // Create and fill out new saved error context state
      yyerrctx = YYNewState(yyps->ssp - yyps->ss);
      yyerrctx->save = yyps->save;
      yyerrctx->state = yystate;
      yyerrctx->errflag = yyps->errflag;
      yyerrctx->ssp = yyerrctx->ss + (yyps->ssp - yyps->ss);
      yyerrctx->vsp = yyerrctx->vs + (yyps->vsp - yyps->vs);
      yyerrctx->psp = yyerrctx->ps + (yyps->psp - yyps->ps);
      memcpy (yyerrctx->ss, yyps->ss, (yyps->ssp - yyps->ss + 1)*sizeof(Yshort));
      YYSCopy(yyerrctx->vs, yyps->vs, (yyps->ssp - yyps->ss + 1));
      YYPCopy(yyerrctx->ps, yyps->ps, (yyps->ssp - yyps->ss + 1));
      yyerrctx->lexeme = yylvp - yylvals;
    }
    yylvp  = yylvals   + save->lexeme;
    yylpp  = yylpsns   + save->lexeme;
    yylexp = yylexemes + save->lexeme;
    yychar = -1;
    yyps->ssp = yyps->ss + (save->ssp - save->ss);
    yyps->vsp = yyps->vs + (save->vsp - save->vs);
    yyps->psp = yyps->ps + (save->psp - save->ps);
    memcpy (yyps->ss, save->ss, (yyps->ssp - yyps->ss + 1) * sizeof(Yshort));
    YYSCopy(yyps->vs, save->vs,  yyps->vsp - yyps->vs + 1);
    YYPCopy(yyps->ps, save->ps,  yyps->psp - yyps->ps + 1);
    ctry = ++save->ctry;
    yystate = save->state;
    // We tried shift, try reduce now
    if ((yyn = yyctable[ctry]) >= 0) {
      goto yyreduce;
    }
    yyps->save = save->save;
    YYFreeState(save);
    //
    // Nothing left on the stack -- error
    //
    if (!yyps->save) {
#if YYDEBUG
      if (yydebug) {
        printf("yydebug[%d]: trial parse FAILED, entering ERROR mode\n", 
	       (int)yytrial);
      }
#endif
      // Restore state as it was in the most forward-advanced error
      yylvp  = yylvals   + yyerrctx->lexeme;
      yylpp  = yylpsns   + yyerrctx->lexeme;
      yylexp = yylexemes + yyerrctx->lexeme;
      yychar = yylexp[-1];
      yylval = yylvp[-1];
      yyposn = yylpp[-1];
      yyps->ssp = yyps->ss + (yyerrctx->ssp - yyerrctx->ss);
      yyps->vsp = yyps->vs + (yyerrctx->vsp - yyerrctx->vs);
      yyps->psp = yyps->ps + (yyerrctx->psp - yyerrctx->ps);
      memcpy (yyps->ss, yyerrctx->ss, (yyps->ssp - yyps->ss + 1) * sizeof(Yshort));
      YYSCopy(yyps->vs, yyerrctx->vs,  yyps->vsp - yyps->vs + 1);
      YYPCopy(yyps->ps, yyerrctx->ps,  yyps->psp - yyps->ps + 1);
      yystate = yyerrctx->state;
      YYFreeState(yyerrctx);
      yyerrctx = NULL;
    }
    yynewerrflag = 1; 
  }
  if (yynewerrflag) {
#ifdef YYERROR_DETAILED
    yyerror_detailed("syntax error", yychar, yylval, yyposn);
#else
    yyerror("syntax error");
#endif
  }
  ++yynerrs;
 yyinrecovery:
  if (yyps->errflag < 3) {
    yyps->errflag = 3;
    for (;;) {
      if ((yyn = yysindex[*(yyps->ssp)]) && 
	  (yyn += YYERRCODE) >= 0 &&
          yyn <= YYTABLESIZE && 
	  yycheck[yyn] == YYERRCODE) {
#if YYDEBUG
        if (yydebug)
          printf("yydebug[%d,%d]: state %d, ERROR recovery shifts to state %d\n",
                 yydepth, (int)yytrial, *(yyps->ssp), yytable[yyn]);
#endif
        /* Use label yyerrlab, so that compiler does not warn */
        if(yyps->errflag != yyps->errflag) goto yyerrlab;
        yystate = yytable[yyn];
        goto yyshift; 
      } else {
#if YYDEBUG
        if (yydebug)
          printf("yydebug[%d,%d]: ERROR recovery discards state %d\n",
                 yydepth, (int)yytrial, *(yyps->ssp));
#endif
        if (yyps->ssp <= yyps->ss) {
	  goto yyabort;
	}
	if(!yytrial) {
	  YYDELETEVAL(yyps->vsp[0],1);
	  YYDELETEPOSN(yyps->psp[0],1);
	}
        --(yyps->ssp);
        --(yyps->vsp);
        --(yyps->psp);
      }
    }
  } else {
    if (yychar == 0) goto yyabort;
#if YYDEBUG
    if (yydebug) {
      yys = 0;
      if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
      if (!yys) yys = "illegal-symbol";
      printf("yydebug[%d,%d]: state %d, ERROR recovery discards token %d (%s)\n",
             yydepth, (int)yytrial, yystate, yychar, yys); 
    }
#endif
    if(!yytrial) {
      YYDELETEVAL(yylval,0);
      YYDELETEPOSN(yyposn,0);
    }
    yychar = (-1);
    goto yyloop;
  }

  //
  // Reduce the rule
  //
yyreduce:
  yym = yylen[yyn];
#if YYDEBUG
  if (yydebug) {
    printf("yydebug[%d,%d]: state %d, reducing by rule %d (%s)",
           yydepth, (int)yytrial, yystate, yyn, yyrule[yyn]);
#ifdef YYDBPR
    if (yym) {
      int i;
      printf("<");
      for (i=yym; i>0; i--) {
        if (i!=yym) printf(", ");
        YYDBPR((yyps->vsp)[1-i]);
      }
      printf(">");
    }
#endif
    printf("\n");
  }
#endif
  if (yyps->ssp + 1 - yym >= yyps->ss + yyps->stacksize) {
    YYMoreStack(yyps);
  }

  /* "$$ = NULL" default action */
  memset(&yyps->val, 0, sizeof(yyps->val));

  /* default reduced position is NULL -- no position at all.
     no position will be assigned at trial time and if no position handling is present */
  memset(&yyps->pos, 0, sizeof(yyps->pos));

  reduce_posn = TRUE;

  switch (yyn) {

case 1:
  if (!yytrial)
#line 460 "layerd_dpp_parser_beta.y"
{/*	Namespaces_And_Imports*/
					rootNode=yyvsp[0].node;
					yyval.node=yyvsp[0].node;
				}
#line 5124 "layerd_dpp_parser_beta_tab.c"
break;
case 2:
  if (!yytrial)
#line 468 "layerd_dpp_parser_beta.y"
{/*	Imports Namespaces*/
					CodeDOM::XplDocumentBody*db=new CodeDOM::XplDocumentBody();
					db->Childs()->InsertAtEnd(yyvsp[0].node);
					/*
				CodeDOM::XplNodeList*list=(CodeDOM::XplNodeList*)$2.node;
				for(CodeDOM::XplNode* m=list->FirstNode();m!=list->GetLastNode();m=list->NextNode()){
					db->Childs()->InsertAtEnd(m);
				}*/
					yyval.node=db;
				}
#line 5139 "layerd_dpp_parser_beta_tab.c"
break;
case 3:
  if (!yytrial)
#line 479 "layerd_dpp_parser_beta.y"
{/*	Imports Namespaces*/
					CodeDOM::XplDocumentBody*db= (CodeDOM::XplDocumentBody*)yyvsp[-1].node;
					db->Childs()->InsertAtEnd(yyvsp[0].node);
					yyval.node=db;
				}
#line 5149 "layerd_dpp_parser_beta_tab.c"
break;
case 4:
  if (!yytrial)
#line 487 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 5155 "layerd_dpp_parser_beta_tab.c"
break;
case 5:
  if (!yytrial)
#line 488 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 5161 "layerd_dpp_parser_beta_tab.c"
break;
case 6:
  if (!yytrial)
#line 489 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 5167 "layerd_dpp_parser_beta_tab.c"
break;
case 7:
  if (!yytrial)
#line 490 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 5173 "layerd_dpp_parser_beta_tab.c"
break;
case 8:
  if (!yytrial)
#line 491 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 5179 "layerd_dpp_parser_beta_tab.c"
break;
case 9:
  if (!yytrial)
#line 497 "layerd_dpp_parser_beta.y"
{/*	PC_IMPORT Import_Parameters PUNTO_COMA*/
					yyval.node=yyvsp[-1].node;
				}
#line 5187 "layerd_dpp_parser_beta_tab.c"
break;
case 10:
  if (!yytrial)
#line 501 "layerd_dpp_parser_beta.y"
{/*	PC_IMPORT error PUNTO_COMA*/
					/*yyerrok();*/
					SINTAX_ERROR("'import' directive invalid.");
					yyval.node=CodeDOM::XplDocumentBody::new_Import();
				}
#line 5197 "layerd_dpp_parser_beta_tab.c"
break;
case 11:
  if (!yytrial)
#line 510 "layerd_dpp_parser_beta.y"
{/*	STRING_LITERAL*/
					CodeDOM::XplName*imp=CodeDOM::XplDocumentBody::new_Import();
					CodeDOM::XplNode*nd=CodeDOM::XplName::new_ns();
					nd->set_Value(yyvsp[0].literal->get_str());
					imp->Childs()->InsertAtEnd(nd);
					yyval.node=imp;
					SET_SOURCE_DATA_S(imp,0);
				}
#line 5210 "layerd_dpp_parser_beta_tab.c"
break;
case 12:
  if (!yytrial)
#line 519 "layerd_dpp_parser_beta.y"
{/*	Import_Parameters COMA STRING_LITERAL*/
					CodeDOM::XplName*imp=(CodeDOM::XplName*)yyvsp[-2].node;
					CodeDOM::XplNode*nd=CodeDOM::XplName::new_ns();
					nd->set_Value(yyvsp[0].literal->get_str());
					imp->Childs()->InsertAtEnd(nd);
					yyval.node=imp;
				}
#line 5222 "layerd_dpp_parser_beta_tab.c"
break;
case 13:
  if (!yytrial)
#line 531 "layerd_dpp_parser_beta.y"
{/*	PC_USING PC_IDENTIFIERS Complete_Class_Name PUNTO_COMA*/
					CodeDOM::XplName*us=CodeDOM::XplDocumentBody::new_UsingIdentifiers();
					CodeDOM::XplNode*n=CodeDOM::XplName::new_ns();
					us->Childs()->InsertAtEnd(n);
					n->set_Value(yyvsp[-1].str);
					yyval.node=us;
					SET_SOURCE_DATA_S(us,0);
				}
#line 5235 "layerd_dpp_parser_beta_tab.c"
break;
case 14:
  if (!yytrial)
#line 540 "layerd_dpp_parser_beta.y"
{/*	PC_USING Complete_Class_Name PUNTO_COMA*/
					CodeDOM::XplName*us=CodeDOM::XplDocumentBody::new_Using();
					CodeDOM::XplNode*n=CodeDOM::XplName::new_ns();
					us->Childs()->InsertAtEnd(n);
					n->set_Value(yyvsp[-1].str);
					yyval.node=us;
					SET_SOURCE_DATA_S(us,0);
				}
#line 5248 "layerd_dpp_parser_beta_tab.c"
break;
case 15:
  if (!yytrial)
#line 549 "layerd_dpp_parser_beta.y"
{/*	PC_USING error	PUNTO_COMA*/
					/*yyerrok();*/
					SINTAX_ERROR("'using' directive invalid.");
					CodeDOM::XplName*us=CodeDOM::XplDocumentBody::new_Using();
					yyval.node=us;
					SET_SOURCE_DATA_S(us,0);
				}
#line 5260 "layerd_dpp_parser_beta_tab.c"
break;
case 16:
  if (!yytrial)
#line 576 "layerd_dpp_parser_beta.y"
{/*	PC_NAMESPACE IDENTIFICADOR OPEN_LLAVE NamespaceBlock CLOSE_LLAVE*/
					CodeDOM::XplNamespace *ns=new CodeDOM::XplNamespace(yyvsp[-3].str,false,false,(CodeDOM::XplNodeList*)yyvsp[-1].node);
                    SET_SOURCE_DATA(ns,-4,0);
					ns->set_ElementName(L"Namespace");
					yyval.node=ns;
				}
#line 5271 "layerd_dpp_parser_beta_tab.c"
break;
case 17:
  if (!yytrial)
#line 583 "layerd_dpp_parser_beta.y"
{/*	PC_NAMESPACE IDENTIFICADOR OPEN_LLAVE CLOSE_LLAVE*/
					CodeDOM::XplNamespace *ns=new CodeDOM::XplNamespace(yyvsp[-2].str,false,false);
                    SET_SOURCE_DATA(ns,-3,0);
					ns->set_ElementName(L"Namespace");
					yyval.node=ns;
				}
#line 5282 "layerd_dpp_parser_beta_tab.c"
break;
case 18:
  if (!yytrial)
#line 590 "layerd_dpp_parser_beta.y"
{/*	PC_NAMESPACE error	OPEN_LLAVE*/
					/*yyerrok();*/
					SINTAX_ERROR("'namespace' declaration invalid.");
					yyval.node=new CodeDOM::XplNamespace();
				}
#line 5292 "layerd_dpp_parser_beta_tab.c"
break;
case 19:
  if (!yytrial)
#line 613 "layerd_dpp_parser_beta.y"
{/*	PC_EXTENSION OPEN_LLAVE Namespace_Members CLOSE_LLAVE*/
					CodeDOM::XplNamespace *ns=new CodeDOM::XplNamespace(L"extension",false,false,(CodeDOM::XplNodeList*)yyvsp[-1].node);
					/*ASSING_COMMENT(ns);*/
					SET_SOURCE_DATA(ns,-3,0);
					ns->set_ElementName(L"Section");
					yyval.node=ns;
				}
#line 5304 "layerd_dpp_parser_beta_tab.c"
break;
case 20:
  if (!yytrial)
#line 621 "layerd_dpp_parser_beta.y"
{/*	PC_ORDINARY OPEN_LLAVE Namespace_Members CLOSE_LLAVE*/
					CodeDOM::XplNamespace *ns=new CodeDOM::XplNamespace(L"ordinary",false,false,(CodeDOM::XplNodeList*)yyvsp[-1].node);
					/*ASSING_COMMENT(ns);*/
                    SET_SOURCE_DATA(ns,-3,0);
					ns->set_ElementName(L"Section");
					yyval.node=ns;
				}
#line 5316 "layerd_dpp_parser_beta_tab.c"
break;
case 21:
  if (!yytrial)
#line 634 "layerd_dpp_parser_beta.y"
{/*	Namespace_Member*/
					CodeDOM::XplNodeList*l=new CodeDOM::XplNodeList();
					l->InsertAtEnd(yyvsp[0].node);
					/*ASSING_COMMENT($1.node);*/
					yyval.list=l;
				}
#line 5327 "layerd_dpp_parser_beta_tab.c"
break;
case 22:
  if (!yytrial)
#line 641 "layerd_dpp_parser_beta.y"
{/*	NamespaceBlock Namespace_Member*/
					CodeDOM::XplNodeList*l=yyvsp[-1].list;
					/*if(l==NULL)l=NEW_ERROR_RESUME_ZOENODELIST;*/
					/*ASSING_COMMENT($2.node);*/
					if(l==NULL)l=new CodeDOM::XplNodeList();
					l->InsertAtEnd(yyvsp[0].node);
					yyval.list=l;
				}
#line 5340 "layerd_dpp_parser_beta_tab.c"
break;
case 23:
  if (!yytrial)
#line 652 "layerd_dpp_parser_beta.y"
{
										/*ASSING_COMMENT($1.node);*/
										yyval=yyvsp[0];
									}
#line 5349 "layerd_dpp_parser_beta_tab.c"
break;
case 24:
  if (!yytrial)
#line 656 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 5355 "layerd_dpp_parser_beta_tab.c"
break;
case 25:
  if (!yytrial)
#line 657 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 5361 "layerd_dpp_parser_beta_tab.c"
break;
case 26:
  if (!yytrial)
#line 659 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 5367 "layerd_dpp_parser_beta_tab.c"
break;
case 27:
  if (!yytrial)
#line 663 "layerd_dpp_parser_beta.y"
{
					SINTAX_ERROR("statements not valid inside a namespace body.");
					yyval.node=new CodeDOM::XplClass();
				}
#line 5376 "layerd_dpp_parser_beta_tab.c"
break;
case 28:
  if (!yytrial)
#line 679 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];RET_POS=GET_PARSER_POS[0];}
#line 5382 "layerd_dpp_parser_beta_tab.c"
break;
case 29:
  if (!yytrial)
#line 682 "layerd_dpp_parser_beta.y"
{/*	Complete_Class_Name OP_DOSPUNTOSDOBLE IDENTIFICADOR*/
				wcscat(yyvsp[-2].str,DT("::"));
				wcscat(yyvsp[-2].str,yyvsp[0].str);
				yyval=yyvsp[-2];
                RET_POS=GET_PARSER_POS[0];
			}
#line 5393 "layerd_dpp_parser_beta_tab.c"
break;
case 30:
  if (!yytrial)
#line 707 "layerd_dpp_parser_beta.y"
{/*	Class_Decl*/
					/*ASSING_COMMENT($1.node);*/
					yyval.node=yyvsp[0].node;
				}
#line 5402 "layerd_dpp_parser_beta_tab.c"
break;
case 31:
  if (!yytrial)
#line 712 "layerd_dpp_parser_beta.y"
{
					/*ASSING_COMMENT($1.node);*/
	                yyval.node=yyvsp[0].node;
	            }
#line 5411 "layerd_dpp_parser_beta_tab.c"
break;
case 32:
  if (!yytrial)
#line 720 "layerd_dpp_parser_beta.y"
{/*	Decl_Mod PC_ENUM IDENTIFICADOR OPEN_LLAVE Enum_Members CLOSE_LLAVE*/
					CodeDOM::XplClass*clase=
					CreateClass(yyvsp[-3].str,(CodeDOM::XplNodeList*)yyvsp[-1].list,NULL,NULL,PC_ENUM,yyvsp[-5].num);
					SetEnumConstantTypes(clase,PC_INT);
					yyval.node=clase;
                    SET_SOURCE_DATA(clase,-4,0);
				}
#line 5423 "layerd_dpp_parser_beta_tab.c"
break;
case 33:
  if (!yytrial)
#line 728 "layerd_dpp_parser_beta.y"
{/*	Decl_Mod PC_ENUM IDENTIFICADOR OPEN_LLAVE Enum_Members CLOSE_LLAVE*/
					CodeDOM::XplClass*clase=
					CreateClass(yyvsp[-5].str,(CodeDOM::XplNodeList*)yyvsp[-1].list,NULL,NULL,PC_ENUM,yyvsp[-7].num);
					SetEnumConstantTypes(clase,yyvsp[-3].num);
					yyval.node=clase;
                    SET_SOURCE_DATA(clase,-6,0);
				}
#line 5435 "layerd_dpp_parser_beta_tab.c"
break;
case 34:
  if (!yytrial)
#line 736 "layerd_dpp_parser_beta.y"
{/*	Decl_Mod PC_ENUM IDENTIFICADOR OPEN_LLAVE Enum_Members CLOSE_LLAVE*/
					CodeDOM::XplClass*clase=
					CreateClass(yyvsp[-3].str,(CodeDOM::XplNodeList*)yyvsp[-1].list,NULL,NULL,PC_ENUM,0);
					SetEnumConstantTypes(clase,PC_INT);
					yyval.node=clase;
                    SET_SOURCE_DATA(clase,-4,0);
				}
#line 5447 "layerd_dpp_parser_beta_tab.c"
break;
case 35:
  if (!yytrial)
#line 744 "layerd_dpp_parser_beta.y"
{/*	Decl_Mod PC_ENUM IDENTIFICADOR OPEN_LLAVE Enum_Members CLOSE_LLAVE*/
					CodeDOM::XplClass*clase=
					CreateClass(yyvsp[-5].str,(CodeDOM::XplNodeList*)yyvsp[-1].list,NULL,NULL,PC_ENUM,0);
					SetEnumConstantTypes(clase,yyvsp[-3].num);
					yyval.node=clase;
                    SET_SOURCE_DATA(clase,-6,0);
				}
#line 5459 "layerd_dpp_parser_beta_tab.c"
break;
case 36:
  if (!yytrial)
#line 755 "layerd_dpp_parser_beta.y"
{/*	Enum_Constant*/
					CodeDOM::XplNodeList*list=new CodeDOM::XplNodeList();
					/*ASSING_COMMENT($1.node);*/
					list->InsertAtEnd(yyvsp[0].node);
					yyval.list=list;
				}
#line 5470 "layerd_dpp_parser_beta_tab.c"
break;
case 37:
  if (!yytrial)
#line 762 "layerd_dpp_parser_beta.y"
{/*	Enum_Constants COMA Enum_Constant*/
					CodeDOM::XplNodeList*list=(CodeDOM::XplNodeList*)yyvsp[-2].list;
					if(list==NULL)list=new CodeDOM::XplNodeList();
					/*ASSING_COMMENT($3.node);*/
					list->InsertAtEnd(yyvsp[0].node);
					yyval.list=list;
				}
#line 5482 "layerd_dpp_parser_beta_tab.c"
break;
case 38:
  if (!yytrial)
#line 769 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 5488 "layerd_dpp_parser_beta_tab.c"
break;
case 39:
  if (!yytrial)
#line 774 "layerd_dpp_parser_beta.y"
{/*	IDENTIFICADOR Enum_Initializer*/
					CodeDOM::XplField*field=CodeDOM::XplClass::new_Field();
					field->set_name(yyvsp[-1].str);
					field->set_storage(CodeDOM::ZOEVARSTORAGE_ENUM_STATIC);
					field->set_access(CodeDOM::ZOEACCESSTYPE_ENUM_PUBLIC);
					field->set_i((CodeDOM::XplInitializerList*)yyvsp[0].node);
					yyval.node=field;
					SET_SOURCE_DATA_S(field,-1);
				}
#line 5502 "layerd_dpp_parser_beta_tab.c"
break;
case 40:
  if (!yytrial)
#line 784 "layerd_dpp_parser_beta.y"
{/*	IDENTIFICADOR*/
					CodeDOM::XplField*field=CodeDOM::XplClass::new_Field();
					field->set_name(yyvsp[0].str);
					field->set_storage(CodeDOM::ZOEVARSTORAGE_ENUM_STATIC);
					field->set_access(CodeDOM::ZOEACCESSTYPE_ENUM_PUBLIC);
					yyval.node=field;
					SET_SOURCE_DATA_S(field,0);
				}
#line 5515 "layerd_dpp_parser_beta_tab.c"
break;
case 41:
  if (!yytrial)
#line 810 "layerd_dpp_parser_beta.y"
{/*	OP_IGUAL Constant_Expression*/
                	CodeDOM::XplExpression*exp=CodeDOM::XplInitializerList::new_e();
                	exp->set_texpression(yyvsp[0].node);
					exp->set_ElementName(DT("e"));
                   	CodeDOM::XplInitializerList*list=CodeDOM::XplDeclarator::new_i();
                    list->Childs()->InsertAtEnd(exp);
                    yyval.node=list;
				}
#line 5528 "layerd_dpp_parser_beta_tab.c"
break;
case 42:
  if (!yytrial)
#line 821 "layerd_dpp_parser_beta.y"
{yyval.num=PC_CLASS;RET_POS=GET_PARSER_POS[0];}
#line 5534 "layerd_dpp_parser_beta_tab.c"
break;
case 43:
  if (!yytrial)
#line 822 "layerd_dpp_parser_beta.y"
{yyval.num=PC_INTERFACE;RET_POS=GET_PARSER_POS[0];}
#line 5540 "layerd_dpp_parser_beta_tab.c"
break;
case 44:
  if (!yytrial)
#line 823 "layerd_dpp_parser_beta.y"
{yyval.num=PC_STRUCT;RET_POS=GET_PARSER_POS[0];}
#line 5546 "layerd_dpp_parser_beta_tab.c"
break;
case 45:
  if (!yytrial)
#line 825 "layerd_dpp_parser_beta.y"
{yyval.num=PC_UNION;RET_POS=GET_PARSER_POS[0];}
#line 5552 "layerd_dpp_parser_beta_tab.c"
break;
case 46:
  if (!yytrial)
#line 832 "layerd_dpp_parser_beta.y"
{/*	Decl_Mod PC_CLASS IDENTIFICADOR PC_INHERITS Base_List PC_IMPLEMENTS Implement_List OPEN_LLAVE Class_Decl_Block CLOSE_LLAVE*/
					yyval.node=CreateClass(yyvsp[-7].str /*Nombre*/, yyvsp[-1].list /*ClassMembers*/, yyvsp[-5].node /*Inherits_List*/
					                   , yyvsp[-3].node /*Implement_List*/, yyvsp[-8].num /*Tipo*/,yyvsp[-9].num /*Modifiers*/);
                    SET_SOURCE_DATA(((CodeDOM::XplClass*)yyval.node),-8,0);
				}
#line 5562 "layerd_dpp_parser_beta_tab.c"
break;
case 47:
  if (!yytrial)
#line 838 "layerd_dpp_parser_beta.y"
{/*	Decl_Mod PC_CLASS IDENTIFICADOR PC_INHERITS Base_List OPEN_LLAVE Class_Decl_Block CLOSE_LLAVE*/
					yyval.node=CreateClass(yyvsp[-5].str /*Nombre*/, yyvsp[-1].list /*ClassMembers*/, yyvsp[-3].node /*Inherits_List*/
					                   , NULL /*Implement_List*/, yyvsp[-6].num /*Tipo*/,yyvsp[-7].num /*Modifiers*/);
                    SET_SOURCE_DATA(((CodeDOM::XplClass*)yyval.node),-6,0);
				}
#line 5572 "layerd_dpp_parser_beta_tab.c"
break;
case 48:
  if (!yytrial)
#line 844 "layerd_dpp_parser_beta.y"
{/*	Decl_Mod PC_CLASS IDENTIFICADOR PC_IMPLEMENTS Implement_List OPEN_LLAVE Class_Decl_Block CLOSE_LLAVE*/
					yyval.node=CreateClass(yyvsp[-5].str /*Nombre*/, yyvsp[-1].list /*ClassMembers*/, NULL /*Inherits_List*/
					                   , yyvsp[-3].node /*Implement_List*/, yyvsp[-6].num /*Tipo*/,yyvsp[-7].num /*Modifiers*/);
                    SET_SOURCE_DATA(((CodeDOM::XplClass*)yyval.node),-6,0);
				}
#line 5582 "layerd_dpp_parser_beta_tab.c"
break;
case 49:
  if (!yytrial)
#line 850 "layerd_dpp_parser_beta.y"
{/*	Decl_Mod PC_CLASS IDENTIFICADOR OPEN_LLAVE Class_Decl_Block CLOSE_LLAVE*/
					yyval.node=CreateClass(yyvsp[-3].str /*Nombre*/, yyvsp[-1].list /*ClassMembers*/, NULL /*Inherits_List*/
					                   , NULL /*Implement_List*/, yyvsp[-4].num /*Tipo*/,yyvsp[-5].num /*Modifiers*/);
                    SET_SOURCE_DATA(((CodeDOM::XplClass*)yyval.node),-4,0);
				}
#line 5592 "layerd_dpp_parser_beta_tab.c"
break;
case 50:
  if (!yytrial)
#line 856 "layerd_dpp_parser_beta.y"
{/*	PC_CLASS IDENTIFICADOR PC_INHERITS Base_List PC_IMPLEMENTS Implement_List OPEN_LLAVE Class_Decl_Block CLOSE_LLAVE*/
					yyval.node=CreateClass(yyvsp[-7].str /*Nombre*/, yyvsp[-1].list /*ClassMembers*/, yyvsp[-5].node /*Inherits_List*/
					                   , yyvsp[-3].node /*Implement_List*/, yyvsp[-8].num /*Tipo*/,0/*Modifiers*/);
                    SET_SOURCE_DATA(((CodeDOM::XplClass*)yyval.node),-8,0);
				}
#line 5602 "layerd_dpp_parser_beta_tab.c"
break;
case 51:
  if (!yytrial)
#line 862 "layerd_dpp_parser_beta.y"
{/*	PC_CLASS IDENTIFICADOR PC_INHERITS Base_List OPEN_LLAVE Class_Decl_Block CLOSE_LLAVE*/
					yyval.node=CreateClass(yyvsp[-5].str /*Nombre*/, yyvsp[-1].list /*ClassMembers*/, yyvsp[-3].node /*Inherits_List*/
					                   , NULL /*Implement_List*/, yyvsp[-6].num /*Tipo*/, 0/*Modifiers*/);
                    SET_SOURCE_DATA(((CodeDOM::XplClass*)yyval.node),-6,0);
				}
#line 5612 "layerd_dpp_parser_beta_tab.c"
break;
case 52:
  if (!yytrial)
#line 868 "layerd_dpp_parser_beta.y"
{/*	PC_CLASS IDENTIFICADOR PC_IMPLEMENTS Implement_List OPEN_LLAVE Class_Decl_Block CLOSE_LLAVE*/
					yyval.node=CreateClass(yyvsp[-5].str /*Nombre*/, yyvsp[-1].list /*ClassMembers*/, NULL /*Inherits_List*/
					                   , yyvsp[-3].node /*Implement_List*/, yyvsp[-6].num /*Tipo*/, 0/*Modifiers*/);
                    SET_SOURCE_DATA(((CodeDOM::XplClass*)yyval.node),-6,0);
				}
#line 5622 "layerd_dpp_parser_beta_tab.c"
break;
case 53:
  if (!yytrial)
#line 874 "layerd_dpp_parser_beta.y"
{/*	PC_CLASS IDENTIFICADOR OPEN_LLAVE Class_Decl_Block CLOSE_LLAVE*/
					yyval.node=CreateClass(yyvsp[-3].str /*Nombre*/, yyvsp[-1].list /*ClassMembers*/, NULL /*Inherits_List*/
					                   , NULL /*Implement_List*/, yyvsp[-4].num /*Tipo*/,0 /*Modifiers*/);
                    SET_SOURCE_DATA(((CodeDOM::XplClass*)yyval.node),-4,0);
				}
#line 5632 "layerd_dpp_parser_beta_tab.c"
break;
case 54:
  if (!yytrial)
#line 882 "layerd_dpp_parser_beta.y"
{/*	PC_CLASS IDENTIFICADOR OPEN_LLAVE Class_Decl_Block CLOSE_LLAVE*/
					yyval.node=CreateClass(yyvsp[-2].str /*Nombre*/, NULL /*ClassMembers*/, NULL /*Inherits_List*/
					                   , NULL /*Implement_List*/, yyvsp[-3].num /*Tipo*/,0 /*Modifiers*/);
                    SET_SOURCE_DATA(((CodeDOM::XplClass*)yyval.node),-4,0);
				}
#line 5642 "layerd_dpp_parser_beta_tab.c"
break;
case 55:
  if (!yytrial)
#line 888 "layerd_dpp_parser_beta.y"
{/*	PC_CLASS IDENTIFICADOR PC_INHERITS Base_List OPEN_LLAVE Class_Decl_Block CLOSE_LLAVE*/
					yyval.node=CreateClass(yyvsp[-4].str /*Nombre*/, NULL /*ClassMembers*/, yyvsp[-2].node /*Inherits_List*/
					                   , NULL /*Implement_List*/, yyvsp[-5].num /*Tipo*/, 0/*Modifiers*/);
                    SET_SOURCE_DATA(((CodeDOM::XplClass*)yyval.node),-6,0);
				}
#line 5652 "layerd_dpp_parser_beta_tab.c"
break;
case 56:
  if (!yytrial)
#line 894 "layerd_dpp_parser_beta.y"
{/*	PC_CLASS IDENTIFICADOR PC_IMPLEMENTS Implement_List OPEN_LLAVE Class_Decl_Block CLOSE_LLAVE*/
					yyval.node=CreateClass(yyvsp[-4].str /*Nombre*/, NULL /*ClassMembers*/, NULL /*Inherits_List*/
					                   , yyvsp[-2].node /*Implement_List*/, yyvsp[-5].num /*Tipo*/, 0/*Modifiers*/);
                    SET_SOURCE_DATA(((CodeDOM::XplClass*)yyval.node),-6,0);
				}
#line 5662 "layerd_dpp_parser_beta_tab.c"
break;
case 57:
  if (!yytrial)
#line 900 "layerd_dpp_parser_beta.y"
{/*	PC_CLASS IDENTIFICADOR PC_INHERITS Base_List PC_IMPLEMENTS Implement_List OPEN_LLAVE Class_Decl_Block CLOSE_LLAVE*/
					yyval.node=CreateClass(yyvsp[-6].str /*Nombre*/, NULL /*ClassMembers*/, yyvsp[-4].node /*Inherits_List*/
					                   , yyvsp[-2].node /*Implement_List*/, yyvsp[-7].num /*Tipo*/,0/*Modifiers*/);
                    SET_SOURCE_DATA(((CodeDOM::XplClass*)yyval.node),-8,0);
				}
#line 5672 "layerd_dpp_parser_beta_tab.c"
break;
case 58:
  if (!yytrial)
#line 906 "layerd_dpp_parser_beta.y"
{/*	Decl_Mod PC_CLASS IDENTIFICADOR PC_INHERITS Base_List PC_IMPLEMENTS Implement_List OPEN_LLAVE Class_Decl_Block CLOSE_LLAVE*/
					yyval.node=CreateClass(yyvsp[-6].str /*Nombre*/, NULL /*ClassMembers*/, yyvsp[-4].node /*Inherits_List*/
					                   , yyvsp[-2].node /*Implement_List*/, yyvsp[-7].num /*Tipo*/,yyvsp[-8].num /*Modifiers*/);
                    SET_SOURCE_DATA(((CodeDOM::XplClass*)yyval.node),-8,0);
				}
#line 5682 "layerd_dpp_parser_beta_tab.c"
break;
case 59:
  if (!yytrial)
#line 912 "layerd_dpp_parser_beta.y"
{/*	Decl_Mod PC_CLASS IDENTIFICADOR PC_INHERITS Base_List OPEN_LLAVE Class_Decl_Block CLOSE_LLAVE*/
					yyval.node=CreateClass(yyvsp[-4].str /*Nombre*/, NULL /*ClassMembers*/, yyvsp[-2].node /*Inherits_List*/
					                   , NULL /*Implement_List*/, yyvsp[-5].num /*Tipo*/,yyvsp[-6].num /*Modifiers*/);
                    SET_SOURCE_DATA(((CodeDOM::XplClass*)yyval.node),-6,0);
				}
#line 5692 "layerd_dpp_parser_beta_tab.c"
break;
case 60:
  if (!yytrial)
#line 918 "layerd_dpp_parser_beta.y"
{/*	Decl_Mod PC_CLASS IDENTIFICADOR PC_IMPLEMENTS Implement_List OPEN_LLAVE Class_Decl_Block CLOSE_LLAVE*/
					yyval.node=CreateClass(yyvsp[-4].str /*Nombre*/, NULL /*ClassMembers*/, NULL /*Inherits_List*/
					                   , yyvsp[-2].node /*Implement_List*/, yyvsp[-5].num /*Tipo*/,yyvsp[-6].num /*Modifiers*/);
                    SET_SOURCE_DATA(((CodeDOM::XplClass*)yyval.node),-6,0);
				}
#line 5702 "layerd_dpp_parser_beta_tab.c"
break;
case 61:
  if (!yytrial)
#line 924 "layerd_dpp_parser_beta.y"
{/*	Decl_Mod PC_CLASS IDENTIFICADOR OPEN_LLAVE Class_Decl_Block CLOSE_LLAVE*/
					yyval.node=CreateClass(yyvsp[-2].str /*Nombre*/, NULL /*ClassMembers*/, NULL /*Inherits_List*/
					                   , NULL /*Implement_List*/, yyvsp[-3].num /*Tipo*/,yyvsp[-4].num /*Modifiers*/);
                    SET_SOURCE_DATA(((CodeDOM::XplClass*)yyval.node),-4,0);
				}
#line 5712 "layerd_dpp_parser_beta_tab.c"
break;
case 62:
  if (!yytrial)
#line 936 "layerd_dpp_parser_beta.y"
{/*	Base_Specifier*/
					CodeDOM::XplInherits*inh=CodeDOM::XplClass::new_Inherits();
					inh->Childs()->InsertAtEnd(yyvsp[0].node);
					yyval.node=inh;
				}
#line 5722 "layerd_dpp_parser_beta_tab.c"
break;
case 63:
  if (!yytrial)
#line 942 "layerd_dpp_parser_beta.y"
{/*	Base_List COMA Base_Specifier*/
					CodeDOM::XplInherits*inh=(CodeDOM::XplInherits*)yyvsp[-2].node;
					inh->Childs()->InsertAtEnd(yyvsp[0].node);
					yyval.node=inh;
				}
#line 5732 "layerd_dpp_parser_beta_tab.c"
break;
case 64:
  if (!yytrial)
#line 952 "layerd_dpp_parser_beta.y"
{/*	PC_VIRTUAL Access_Modifier Complete_Class_Name*/
					CodeDOM::XplInherit*c=CodeDOM::XplInherits::new_c();
					CodeDOM::XplType* classType = CodeDOM::XplInherit::new_type();
					classType->set_typename(yyvsp[0].str);
					c->set_type(classType);
					if(yyvsp[-1].num==SM_PRIVATE)
						c->set_access(CodeDOM::ZOEACCESSTYPE_ENUM_PRIVATE);
					else if(yyvsp[-1].num==SM_PUBLIC)
						c->set_access(CodeDOM::ZOEACCESSTYPE_ENUM_PUBLIC);
					else if(yyvsp[-1].num==SM_PROTECTED)
						c->set_access(CodeDOM::ZOEACCESSTYPE_ENUM_PROTECTED);
					else if(yyvsp[-1].num==SM_IPRIVATE)
						c->set_access(CodeDOM::ZOEACCESSTYPE_ENUM_PRIVATE);
					else if(yyvsp[-1].num==SM_IPUBLIC)
						c->set_access(CodeDOM::ZOEACCESSTYPE_ENUM_PUBLIC);
					else if(yyvsp[-1].num==SM_IPROTECTED)
						c->set_access(CodeDOM::ZOEACCESSTYPE_ENUM_PROTECTED);
					c->set_virtual(false);
					SET_SOURCE_DATA(c,-2,0);
					yyval.node=c;
				}
#line 5758 "layerd_dpp_parser_beta_tab.c"
break;
case 65:
  if (!yytrial)
#line 974 "layerd_dpp_parser_beta.y"
{/*	Access_Modifier PC_VIRTUAL Complete_Class_Name*/
					CodeDOM::XplInherit*c=CodeDOM::XplInherits::new_c();
					CodeDOM::XplType* classType = CodeDOM::XplInherit::new_type();
					classType->set_typename(yyvsp[0].str);
					c->set_type(classType);
					if(yyvsp[-2].num==SM_PRIVATE)
						c->set_access(CodeDOM::ZOEACCESSTYPE_ENUM_PRIVATE);
					else if(yyvsp[-2].num==SM_PUBLIC)
						c->set_access(CodeDOM::ZOEACCESSTYPE_ENUM_PUBLIC);
					else if(yyvsp[-2].num==SM_PROTECTED)
						c->set_access(CodeDOM::ZOEACCESSTYPE_ENUM_PROTECTED);
					else if(yyvsp[-2].num==SM_IPRIVATE)
						c->set_access(CodeDOM::ZOEACCESSTYPE_ENUM_PRIVATE);
					else if(yyvsp[-2].num==SM_IPUBLIC)
						c->set_access(CodeDOM::ZOEACCESSTYPE_ENUM_PUBLIC);
					else if(yyvsp[-2].num==SM_IPROTECTED)
						c->set_access(CodeDOM::ZOEACCESSTYPE_ENUM_PROTECTED);
					c->set_virtual(false);
					SET_SOURCE_DATA(c,-1,0);
					yyval.node=c;
				}
#line 5784 "layerd_dpp_parser_beta_tab.c"
break;
case 66:
  if (!yytrial)
#line 996 "layerd_dpp_parser_beta.y"
{/*	PC_VIRTUAL Complete_Class_Name*/
					CodeDOM::XplInherit*c=CodeDOM::XplInherits::new_c();
					CodeDOM::XplType* classType = CodeDOM::XplInherit::new_type();
					classType->set_typename(yyvsp[0].str);
					c->set_type(classType);
					c->set_access(CodeDOM::ZOEACCESSTYPE_ENUM_PUBLIC);
					c->set_virtual(false);
					yyval.node=c;
					SET_SOURCE_DATA(c,-1,0);
				}
#line 5799 "layerd_dpp_parser_beta_tab.c"
break;
case 67:
  if (!yytrial)
#line 1007 "layerd_dpp_parser_beta.y"
{/*	Access_Modifier Complete_Class_Name*/
					CodeDOM::XplInherit*c=CodeDOM::XplInherits::new_c();
					CodeDOM::XplType* classType = CodeDOM::XplInherit::new_type();
					classType->set_typename(yyvsp[0].str);
					c->set_type(classType);
					if(yyvsp[-1].num==SM_PRIVATE)
						c->set_access(CodeDOM::ZOEACCESSTYPE_ENUM_PRIVATE);
					else if(yyvsp[-1].num==SM_PUBLIC)
						c->set_access(CodeDOM::ZOEACCESSTYPE_ENUM_PUBLIC);
					else if(yyvsp[-1].num==SM_PROTECTED)
						c->set_access(CodeDOM::ZOEACCESSTYPE_ENUM_PROTECTED);
					else if(yyvsp[-1].num==SM_IPRIVATE)
						c->set_access(CodeDOM::ZOEACCESSTYPE_ENUM_PRIVATE);
					else if(yyvsp[-1].num==SM_IPUBLIC)
						c->set_access(CodeDOM::ZOEACCESSTYPE_ENUM_PUBLIC);
					else if(yyvsp[-1].num==SM_IPROTECTED)
						c->set_access(CodeDOM::ZOEACCESSTYPE_ENUM_PROTECTED);
					c->set_virtual(true);
					yyval.node=c;
					SET_SOURCE_DATA_S(c,0);
				}
#line 5825 "layerd_dpp_parser_beta_tab.c"
break;
case 68:
  if (!yytrial)
#line 1029 "layerd_dpp_parser_beta.y"
{/*	Complete_Class_Name*/
					CodeDOM::XplInherit*c=CodeDOM::XplInherits::new_c();
					CodeDOM::XplType* classType = CodeDOM::XplInherit::new_type();
					classType->set_typename(yyvsp[0].str);
					c->set_type(classType);
					c->set_access(CodeDOM::ZOEACCESSTYPE_ENUM_PUBLIC);
					c->set_virtual(true);
					yyval.node=c;
					SET_SOURCE_DATA_S(c,0);
				}
#line 5840 "layerd_dpp_parser_beta_tab.c"
break;
case 69:
  if (!yytrial)
#line 1044 "layerd_dpp_parser_beta.y"
{/*	Implement_Specifier*/
					CodeDOM::XplInherits*imp=CodeDOM::XplClass::new_Implements();
					imp->Childs()->InsertAtEnd(yyvsp[0].node);
					yyval.node=imp;
				}
#line 5850 "layerd_dpp_parser_beta_tab.c"
break;
case 70:
  if (!yytrial)
#line 1050 "layerd_dpp_parser_beta.y"
{/*	Implement_List COMA Implement_Specifier*/
					CodeDOM::XplInherits*imp=(CodeDOM::XplInherits*)yyvsp[-2].node;
					imp->Childs()->InsertAtEnd(yyvsp[0].node);
					yyval.node=imp;
				}
#line 5860 "layerd_dpp_parser_beta_tab.c"
break;
case 71:
  if (!yytrial)
#line 1060 "layerd_dpp_parser_beta.y"
{/*	Access_Modifier Complete_Class_Name*/
					CodeDOM::XplInherit*i=CodeDOM::XplInherits::new_c();
					CodeDOM::XplType* classType = CodeDOM::XplInherit::new_type();
					classType->set_typename(yyvsp[0].str);
					i->set_type(classType);
					if(yyvsp[-1].num==SM_PRIVATE)
						i->set_access(CodeDOM::ZOEACCESSTYPE_ENUM_PRIVATE);
					else if(yyvsp[-1].num==SM_PUBLIC)
						i->set_access(CodeDOM::ZOEACCESSTYPE_ENUM_PUBLIC);
					else if(yyvsp[-1].num==SM_PROTECTED)
						i->set_access(CodeDOM::ZOEACCESSTYPE_ENUM_PROTECTED);
					else if(yyvsp[-1].num==SM_IPRIVATE)
						i->set_access(CodeDOM::ZOEACCESSTYPE_ENUM_PRIVATE);
					else if(yyvsp[-1].num==SM_IPUBLIC)
						i->set_access(CodeDOM::ZOEACCESSTYPE_ENUM_PUBLIC);
					else if(yyvsp[-1].num==SM_IPROTECTED)
						i->set_access(CodeDOM::ZOEACCESSTYPE_ENUM_PROTECTED);
					yyval.node=i;
					SET_SOURCE_DATA_S(i,0);
				}
#line 5885 "layerd_dpp_parser_beta_tab.c"
break;
case 72:
  if (!yytrial)
#line 1081 "layerd_dpp_parser_beta.y"
{/*	Complete_Class_Name*/
					CodeDOM::XplInherit*i=CodeDOM::XplInherits::new_c();
					CodeDOM::XplType* classType = CodeDOM::XplInherit::new_type();
					classType->set_typename(yyvsp[0].str);
					i->set_type(classType);
					i->set_access(CodeDOM::ZOEACCESSTYPE_ENUM_PUBLIC);
					yyval.node=i;
					SET_SOURCE_DATA_S(i,0);
				}
#line 5899 "layerd_dpp_parser_beta_tab.c"
break;
case 73:
  if (!yytrial)
#line 1095 "layerd_dpp_parser_beta.y"
{/*	Class_Member_Decl*/
					CodeDOM::XplNodeList*l=new CodeDOM::XplNodeList();
					if(yyvsp[0].nodos[1]==0)
						l->InsertAtEnd(yyvsp[0].node);
					else{ /*/Fields*/
						CodeDOM::XplNodeList* fields=(CodeDOM::XplNodeList*)yyvsp[0].nodos[0];
						for(CodeDOM::XplNode* m2=fields->FirstNode();m2!=NULL;m2=fields->NextNode()){
							/*ASSING_COMMENT(m2);*/
							l->InsertAtEnd(m2);
						}
						fields->Clear();
						delete fields;
					}
					yyval.list=l;
				}
#line 5919 "layerd_dpp_parser_beta_tab.c"
break;
case 74:
  if (!yytrial)
#line 1111 "layerd_dpp_parser_beta.y"
{/*	Class_Decl_Block Class_Member_Decl*/
					CodeDOM::XplNodeList*l=yyvsp[-1].list;
					if(l==NULL)l=new CodeDOM::XplNodeList();
					if(yyvsp[0].nodos[1]==0)
						l->InsertAtEnd(yyvsp[0].node);
					else{	/*/Fields*/
						CodeDOM::XplNodeList* fields=(CodeDOM::XplNodeList*)yyvsp[0].nodos[0];
						for(CodeDOM::XplNode* m2=fields->FirstNode();m2!=NULL;m2=fields->NextNode()){
							/*ASSING_COMMENT(m2);*/
							l->InsertAtEnd(m2);
						}
						fields->Clear();
						delete fields;
					}
					yyval.list=l;
				}
#line 5940 "layerd_dpp_parser_beta_tab.c"
break;
case 75:
  if (!yytrial)
#line 1131 "layerd_dpp_parser_beta.y"
{
					yyval.nodos[0]=yyvsp[0].node;
					/*Utilizo nodos[1]=1 como bandera para indicar fields en cuyo caso*/
					/*nodos[0] es una lista de campos*/
					yyval.nodos[1]=(CodeDOM::XplNode*)1; 
				}
#line 5951 "layerd_dpp_parser_beta_tab.c"
break;
case 76:
  if (!yytrial)
#line 1137 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];yyval.nodos[1]=0;}
#line 5957 "layerd_dpp_parser_beta_tab.c"
break;
case 77:
  if (!yytrial)
#line 1138 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];yyval.nodos[1]=0;}
#line 5963 "layerd_dpp_parser_beta_tab.c"
break;
case 78:
  if (!yytrial)
#line 1139 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];yyval.nodos[1]=0;}
#line 5969 "layerd_dpp_parser_beta_tab.c"
break;
case 79:
  if (!yytrial)
#line 1140 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];yyval.nodos[1]=0;}
#line 5975 "layerd_dpp_parser_beta_tab.c"
break;
case 80:
  if (!yytrial)
#line 1142 "layerd_dpp_parser_beta.y"
{
					SINTAX_ERROR("statements not valid inside a class body.");
					yyval.node=new CodeDOM::XplClass();yyval.nodos[1]=0;
				}
#line 5984 "layerd_dpp_parser_beta_tab.c"
break;
case 81:
  if (!yytrial)
#line 1148 "layerd_dpp_parser_beta.y"
{/*	ClassFactory_Call*/
					/*ASSING_COMMENT($1.node);*/
					yyvsp[0].node->set_ElementName(DT("e"));
					yyval.node=yyvsp[0].node;yyval.nodos[1]=0;
				}
#line 5994 "layerd_dpp_parser_beta_tab.c"
break;
case 82:
  if (!yytrial)
#line 1154 "layerd_dpp_parser_beta.y"
{/*	Access_Modifier OP_DOSPUNTOS*/
					CodeDOM::XplNode*node=new CodeDOM::XplNode(DT("AM"),yyvsp[-1].num);
					yyval.node=node;yyval.nodos[1]=0;
				}
#line 6003 "layerd_dpp_parser_beta_tab.c"
break;
case 83:
  if (!yytrial)
#line 1158 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];yyval.nodos[1]=0;}
#line 6009 "layerd_dpp_parser_beta_tab.c"
break;
case 84:
  if (!yytrial)
#line 1159 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];yyval.nodos[1]=0;}
#line 6015 "layerd_dpp_parser_beta_tab.c"
break;
case 85:
  if (!yytrial)
#line 1166 "layerd_dpp_parser_beta.y"
{/*	PC_SETPLATAFORMS OP_DOSPUNTOS SetPlataform_Or PUNTO_COMA*/
					yyvsp[-1].node->set_ElementName(L"SetPlatforms");
					yyval.node=yyvsp[-1].node;
					/*SET_SOURCE_DATA(((CodeDOM::XplSetPlatforms*)$3.node),-3,0);*/
				}
#line 6025 "layerd_dpp_parser_beta_tab.c"
break;
case 88:
  if (!yytrial)
#line 1180 "layerd_dpp_parser_beta.y"
{/*	STRING_LITERAL*/
					CodeDOM::XplPlatform*p=CodeDOM::XplSetPlatforms::new_P();
					p->set_match(CodeDOM::ZOEPLATFORMMATCH_ENUM_EXACTNAME);
					p->set_name(yyvsp[0].literal->get_str());
					yyval.node=p;
				}
#line 6036 "layerd_dpp_parser_beta_tab.c"
break;
case 89:
  if (!yytrial)
#line 1187 "layerd_dpp_parser_beta.y"
{/*	PC_LIKE STRING_LITERAL*/
					CodeDOM::XplPlatform*p=CodeDOM::XplSetPlatforms::new_P();
					p->set_match(CodeDOM::ZOEPLATFORMMATCH_ENUM_LIKE);
					p->set_name(yyvsp[0].literal->get_str());
					yyval.node=p;
				}
#line 6047 "layerd_dpp_parser_beta_tab.c"
break;
case 90:
  if (!yytrial)
#line 1197 "layerd_dpp_parser_beta.y"
{/*	PC_AUTOINSTANCE OP_DOSPUNTOS Autoinstance_Type PUNTO_COMA*/
					yyval.node=yyvsp[-1].node;
					/*SET_SOURCE_DATA(((CodeDOM::XplAutoInstance*)$3.node),-3,0);*/
				}
#line 6056 "layerd_dpp_parser_beta_tab.c"
break;
case 91:
  if (!yytrial)
#line 1205 "layerd_dpp_parser_beta.y"
{/*	PC_BYCALL*/
					CodeDOM::XplAutoInstance*au=CodeDOM::XplClass::new_AutoInstance();
					au->set_by(CodeDOM::ZOEAUTOINSTACETYPES_ENUM_CALL);
					yyval.node=au;
				}
#line 6066 "layerd_dpp_parser_beta_tab.c"
break;
case 92:
  if (!yytrial)
#line 1211 "layerd_dpp_parser_beta.y"
{/*	PC_BYCLASS*/
					CodeDOM::XplAutoInstance*au=CodeDOM::XplClass::new_AutoInstance();
					au->set_by(CodeDOM::ZOEAUTOINSTACETYPES_ENUM_CLASS);
					yyval.node=au;
				}
#line 6076 "layerd_dpp_parser_beta_tab.c"
break;
case 93:
  if (!yytrial)
#line 1217 "layerd_dpp_parser_beta.y"
{/*	PC_BYNAMESPACE*/
					CodeDOM::XplAutoInstance*au=CodeDOM::XplClass::new_AutoInstance();
					au->set_by(CodeDOM::ZOEAUTOINSTACETYPES_ENUM_NAMESPACE);
					yyval.node=au;
				}
#line 6086 "layerd_dpp_parser_beta_tab.c"
break;
case 94:
  if (!yytrial)
#line 1223 "layerd_dpp_parser_beta.y"
{/*	PC_BYCALLTO Identifier_List*/
					CodeDOM::XplAutoInstance*au=new CodeDOM::XplAutoInstance((CodeDOM::XplNodeList*)yyvsp[0].node);
					au->set_ElementName(L"AutoInstance");
					au->set_by(CodeDOM::ZOEAUTOINSTACETYPES_ENUM_CALLTOFUNCTION);
					yyval.node=au;
				}
#line 6097 "layerd_dpp_parser_beta_tab.c"
break;
case 95:
  if (!yytrial)
#line 1233 "layerd_dpp_parser_beta.y"
{/*	IDENTIFICADOR*/
					CodeDOM::XplNodeList*l=new CodeDOM::XplNodeList();
					CodeDOM::XplNode*n=CodeDOM::XplAutoInstance::new_fn();
					n->set_Value(yyvsp[0].str);
					l->InsertAtEnd(n);
					yyval.list=l;
				}
#line 6109 "layerd_dpp_parser_beta_tab.c"
break;
case 96:
  if (!yytrial)
#line 1241 "layerd_dpp_parser_beta.y"
{/*	Identifier_List COMA IDENTIFICADOR*/
					CodeDOM::XplNodeList*l=yyvsp[-2].list;
					/*if(l==NULL)l=NEW_ERROR_RESUME_ZOENODELIST;*/
					if(l==NULL)l=new CodeDOM::XplNodeList();
					CodeDOM::XplNode*n=CodeDOM::XplAutoInstance::new_fn();
					n->set_Value(yyvsp[0].str);
					l->InsertAtEnd(n);
					yyval.list=l;
				}
#line 6123 "layerd_dpp_parser_beta_tab.c"
break;
case 97:
  if (!yytrial)
#line 1254 "layerd_dpp_parser_beta.y"
{yyval.num=SM_PUBLIC;}
#line 6129 "layerd_dpp_parser_beta_tab.c"
break;
case 98:
  if (!yytrial)
#line 1255 "layerd_dpp_parser_beta.y"
{yyval.num=SM_PROTECTED;}
#line 6135 "layerd_dpp_parser_beta_tab.c"
break;
case 99:
  if (!yytrial)
#line 1256 "layerd_dpp_parser_beta.y"
{yyval.num=SM_PRIVATE;}
#line 6141 "layerd_dpp_parser_beta_tab.c"
break;
case 100:
  if (!yytrial)
#line 1258 "layerd_dpp_parser_beta.y"
{yyval.num=SM_IPUBLIC;}
#line 6147 "layerd_dpp_parser_beta_tab.c"
break;
case 101:
  if (!yytrial)
#line 1259 "layerd_dpp_parser_beta.y"
{yyval.num=SM_IPROTECTED;}
#line 6153 "layerd_dpp_parser_beta_tab.c"
break;
case 102:
  if (!yytrial)
#line 1260 "layerd_dpp_parser_beta.y"
{yyval.num=SM_IPRIVATE;}
#line 6159 "layerd_dpp_parser_beta_tab.c"
break;
case 103:
  if (!yytrial)
#line 1267 "layerd_dpp_parser_beta.y"
{
					yyval.nodos[0]=yyvsp[0].node;	/*XplType*/
					yyval.nodos[1]=NULL;		/*Modificadores (unsigned)*/
					RET_POS=GET_PARSER_POS[0];
				}
#line 6169 "layerd_dpp_parser_beta_tab.c"
break;
case 104:
  if (!yytrial)
#line 1273 "layerd_dpp_parser_beta.y"
{
					yyval.nodos[0]=yyvsp[0].node;
					yyval.nodos[1]=yyvsp[-1].node;
					RET_POS=GET_PARSER_POS[0];
				}
#line 6179 "layerd_dpp_parser_beta_tab.c"
break;
case 105:
  if (!yytrial)
#line 1282 "layerd_dpp_parser_beta.y"
{
					CodeDOM::XplType* t=new CodeDOM::XplType();					
					t->set_typename(yyvsp[0].str);
					yyval.node=t;		
					RET_POS=GET_PARSER_POS[0];
				}
#line 6190 "layerd_dpp_parser_beta_tab.c"
break;
case 106:
  if (!yytrial)
#line 1289 "layerd_dpp_parser_beta.y"
{
					CodeDOM::XplType* t=(CodeDOM::XplType*)yyvsp[0].node;
					SetInnerTypeName(t, yyvsp[-1].str);
					yyval.node=t;
					RET_POS=GET_PARSER_POS[-1];
				}
#line 6201 "layerd_dpp_parser_beta_tab.c"
break;
case 107:
  if (!yytrial)
#line 1297 "layerd_dpp_parser_beta.y"
{
					CodeDOM::XplType* t=(CodeDOM::XplType*)yyvsp[0].node;
					t->set_lddata(DT(".")); /*/Muy choto esto*/
					yyval.node=yyvsp[0].node;
					RET_POS=GET_PARSER_POS[0];
				}
#line 6212 "layerd_dpp_parser_beta_tab.c"
break;
case 108:
  if (!yytrial)
#line 1308 "layerd_dpp_parser_beta.y"
{/*	Simple_Type_Name*/
					wcscpy(yyval.str,get_nativeType(yyvsp[0].num));
					RET_POS=GET_PARSER_POS[0];
				}
#line 6221 "layerd_dpp_parser_beta_tab.c"
break;
case 109:
  if (!yytrial)
#line 1313 "layerd_dpp_parser_beta.y"
{/*	User_Type_Name*/
					wcscpy(yyval.str,yyvsp[0].str);
					RET_POS=GET_PARSER_POS[0];
				}
#line 6230 "layerd_dpp_parser_beta_tab.c"
break;
case 110:
  if (!yytrial)
#line 1320 "layerd_dpp_parser_beta.y"
{yyval.node=yyvsp[0].node;}
#line 6236 "layerd_dpp_parser_beta_tab.c"
break;
case 111:
  if (!yytrial)
#line 1321 "layerd_dpp_parser_beta.y"
{yyval.node=yyvsp[0].node;}
#line 6242 "layerd_dpp_parser_beta_tab.c"
break;
case 112:
  if (!yytrial)
#line 1323 "layerd_dpp_parser_beta.y"
{
					SetInnerType((CodeDOM::XplType*)yyvsp[0].node, (CodeDOM::XplType*)yyvsp[-1].node);
					yyval.node=yyvsp[0].node;
				}
#line 6251 "layerd_dpp_parser_beta_tab.c"
break;
case 113:
  if (!yytrial)
#line 1331 "layerd_dpp_parser_beta.y"
{
					CodeDOM::XplType* t=new CodeDOM::XplType();
					t->set_pi((CodeDOM::XplPointerinfo*)yyvsp[0].node);
					t->set_ispointer(true);
					yyval.node=t;
				}
#line 6262 "layerd_dpp_parser_beta_tab.c"
break;
case 114:
  if (!yytrial)
#line 1338 "layerd_dpp_parser_beta.y"
{
					CodeDOM::XplType* t=new CodeDOM::XplType();
					t->set_pi((CodeDOM::XplPointerinfo*)yyvsp[0].node);
					t->set_ispointer(true);

					CodeDOM::XplType* t2=(CodeDOM::XplType*)yyvsp[-1].node;
					t->set_dt(t2);
					yyval.node=t;
				}
#line 6276 "layerd_dpp_parser_beta_tab.c"
break;
case 115:
  if (!yytrial)
#line 1351 "layerd_dpp_parser_beta.y"
{
					CodeDOM::XplType* t=CodeDOM::XplType::new_dt();
					t->set_isarray(true);
					if(yyvsp[0].node!=NULL)t->set_ae(yyvsp[0].exp);
					CodeDOM::XplType* tp=new CodeDOM::XplType();
					CodeDOM::XplPointerinfo* pi=CodeDOM::XplType::new_pi();
					pi->set_ref(true);
					tp->set_pi(pi);
					tp->set_ispointer(true);
					tp->set_dt(t);
					yyval.node=tp;
				}
#line 6293 "layerd_dpp_parser_beta_tab.c"
break;
case 116:
  if (!yytrial)
#line 1364 "layerd_dpp_parser_beta.y"
{
					CodeDOM::XplType* t=CodeDOM::XplType::new_dt();
					t->set_isarray(true);
					if(yyvsp[0].node!=NULL)t->set_ae(yyvsp[0].exp);
					CodeDOM::XplType* tp=new CodeDOM::XplType();
					CodeDOM::XplPointerinfo* pi=CodeDOM::XplType::new_pi();
					pi->set_ref(true);
					tp->set_pi(pi);
					tp->set_ispointer(true);
					tp->set_dt(t);

					CodeDOM::XplType* t2=(CodeDOM::XplType*)yyvsp[-1].node;
					SetInnerType(t2,tp);
					yyval.node=t2;
				}
#line 6313 "layerd_dpp_parser_beta_tab.c"
break;
case 117:
  if (!yytrial)
#line 1384 "layerd_dpp_parser_beta.y"
{
					CodeDOM::XplType* t=new CodeDOM::XplType();
					t->set_typename(yyvsp[0].str);
					yyval.node=t;
					RET_POS=GET_PARSER_POS[0];
				}
#line 6324 "layerd_dpp_parser_beta_tab.c"
break;
case 118:
  if (!yytrial)
#line 1391 "layerd_dpp_parser_beta.y"
{
					CodeDOM::XplType* t=(CodeDOM::XplType*)yyvsp[-1].node;
					SetInnerTypeName(t, yyvsp[0].str);
					yyval.node=t;
					RET_POS=GET_PARSER_POS[0];
				}
#line 6335 "layerd_dpp_parser_beta_tab.c"
break;
case 119:
  if (!yytrial)
#line 1401 "layerd_dpp_parser_beta.y"
{
					CodeDOM::XplType* t=CodeDOM::XplType::new_dt();
					t->set_isarray(true);
					if(yyvsp[0].node!=NULL)t->set_ae(yyvsp[0].exp);
					yyval.node=t;
				}
#line 6346 "layerd_dpp_parser_beta_tab.c"
break;
case 120:
  if (!yytrial)
#line 1408 "layerd_dpp_parser_beta.y"
{
					CodeDOM::XplType* t=new CodeDOM::XplType();
					t->set_pi((CodeDOM::XplPointerinfo*)yyvsp[0].node);
					t->set_ispointer(true);
					yyval.node=t;
				}
#line 6357 "layerd_dpp_parser_beta_tab.c"
break;
case 121:
  if (!yytrial)
#line 1415 "layerd_dpp_parser_beta.y"
{
					CodeDOM::XplType* t=new CodeDOM::XplType();
					t->set_isarray(true);
					if(yyvsp[0].node!=NULL)t->set_ae(yyvsp[0].exp);
										
					CodeDOM::XplType* t2=(CodeDOM::XplType*)yyvsp[-1].node;
					SetInnerType(t2,t);
					yyval.node=t2;
				}
#line 6371 "layerd_dpp_parser_beta_tab.c"
break;
case 122:
  if (!yytrial)
#line 1425 "layerd_dpp_parser_beta.y"
{
					CodeDOM::XplType* t=new CodeDOM::XplType();
					t->set_pi((CodeDOM::XplPointerinfo*)yyvsp[0].node);
					t->set_ispointer(true);

					CodeDOM::XplType* t2=(CodeDOM::XplType*)yyvsp[-1].node;
					SetInnerType(t2,t);
					yyval.node=t2;
				}
#line 6385 "layerd_dpp_parser_beta_tab.c"
break;
case 123:
  if (!yytrial)
#line 1439 "layerd_dpp_parser_beta.y"
{/*	Complete_Class_Name*/
					CodeDOM::XplFunction*f=CodeDOM::XplClass::new_Function();
					f->set_name(yyvsp[0].str);
					CodeDOM::XplType*t=CodeDOM::XplFunction::new_ReturnType();
					f->set_ReturnType(t);
					yyval.node=f;			/*Funcion*/
					RET_POS=GET_PARSER_POS[0];
				}
#line 6398 "layerd_dpp_parser_beta_tab.c"
break;
case 124:
  if (!yytrial)
#line 1448 "layerd_dpp_parser_beta.y"
{/*	PC_OPERATOR Operator_Sym*/
					CodeDOM::XplFunction*f=CodeDOM::XplClass::new_Operator();
					CodeDOM::string fname=L"none";
					fname=get_OperatorFunctionName(yyvsp[0].num);
					f->set_name(fname);
					CodeDOM::XplType*t=CodeDOM::XplFunction::new_ReturnType();
					f->set_ReturnType(t);
					yyval.node=f;			/*Funcion*/
					RET_POS=GET_PARSER_POS[-1];
				}
#line 6413 "layerd_dpp_parser_beta_tab.c"
break;
case 125:
  if (!yytrial)
#line 1459 "layerd_dpp_parser_beta.y"
{/*   PC_INDEXER*/
					CodeDOM::XplFunction*f=CodeDOM::XplClass::new_Indexer();
					f->set_name(DT("%indexer%"));
					CodeDOM::XplType*t=CodeDOM::XplFunction::new_ReturnType();
					f->set_ReturnType(t);
					yyval.node=f;			/*Funcion*/
					RET_POS=GET_PARSER_POS[0];
				}
#line 6426 "layerd_dpp_parser_beta_tab.c"
break;
case 126:
  if (!yytrial)
#line 1468 "layerd_dpp_parser_beta.y"
{/*   Complete_Class_Name OP_DOSPUNTOSDOBLE PC_INDEXER*/
					CodeDOM::XplFunction*f=CodeDOM::XplClass::new_Indexer();
					f->set_name(yyvsp[-2].str);
					f->set_name(f->get_name()+DT("::%indexer%"));
					CodeDOM::XplType*t=CodeDOM::XplFunction::new_ReturnType();
					f->set_ReturnType(t);
					yyval.node=f;			/*Funcion*/
					RET_POS=GET_PARSER_POS[0];
				}
#line 6440 "layerd_dpp_parser_beta_tab.c"
break;
case 127:
  if (!yytrial)
#line 1478 "layerd_dpp_parser_beta.y"
{/*   OP_CELDILLA Complete_Class_Name*/
					CodeDOM::XplFunction*f=CodeDOM::XplClass::new_Function();
					f->set_name(yyvsp[0].str);
					f->set_name(DT("~")+f->get_name());
					CodeDOM::XplType*t=CodeDOM::XplFunction::new_ReturnType();
					f->set_ReturnType(t);
					yyval.node=f;			/*Funcion*/
					RET_POS=GET_PARSER_POS[0];
				}
#line 6454 "layerd_dpp_parser_beta_tab.c"
break;
case 128:
  if (!yytrial)
#line 1491 "layerd_dpp_parser_beta.y"
{/*	OP_IGUAL Variable_Initializer*/
	                if(yyvsp[0].node->get_ElementName()==DT("e")){
	                    /*Es una expresion*/
                       	CodeDOM::XplInitializerList*list=CodeDOM::XplDeclarator::new_i();
	                    list->Childs()->InsertAtEnd(yyvsp[0].node);
	                    yyval.node=list;
						SET_SOURCE_DATA_S(list,-1);
                    }
	                else{
	                    /*Es un lista*/
	                    yyvsp[0].node->set_ElementName(DT("i"));
    	                yyval.node=yyvsp[0].node;
	                }
	            }
#line 6473 "layerd_dpp_parser_beta_tab.c"
break;
case 129:
  if (!yytrial)
#line 1507 "layerd_dpp_parser_beta.y"
{/*	OPEN_PARENTESIS Expression_List CLOSE_PARENTESIS*/
                	CodeDOM::XplInitializerList*init=CodeDOM::XplDeclarator::new_i();
					CodeDOM::XplInitializerList*list=CodeDOM::XplInitializerList::new_list();
                	CodeDOM::XplNodeList*nlist=((CodeDOM::XplExpressionlist*)yyvsp[-1].node)->Childs();
                	for(CodeDOM::XplNode*node=nlist->FirstNode();node!=NULL;node=nlist->NextNode()){
                		list->Childs()->InsertAtEnd(node);
                	}
					init->Childs()->InsertAtEnd(list);
                	yyval.node=init;
					SET_SOURCE_DATA_S(init,0);
	            }
#line 6489 "layerd_dpp_parser_beta_tab.c"
break;
case 130:
  if (!yytrial)
#line 1530 "layerd_dpp_parser_beta.y"
{/*	OPEN_PARENTESIS Expression_List CLOSE_PARENTESIS*/
                	CodeDOM::XplExpression*exp=CodeDOM::XplInitializerList::new_e();
                	exp->set_texpression(yyvsp[0].node);
                	yyval.node=exp;
	            }
#line 6499 "layerd_dpp_parser_beta_tab.c"
break;
case 131:
  if (!yytrial)
#line 1536 "layerd_dpp_parser_beta.y"
{/*	Complex_Initializer*/
	                yyval.node=yyvsp[0].node;
	            }
#line 6507 "layerd_dpp_parser_beta_tab.c"
break;
case 132:
  if (!yytrial)
#line 1543 "layerd_dpp_parser_beta.y"
{/*	OPEN_LLAVE Initializer_List CLOSE_LLAVE*/
                	CodeDOM::XplInitializerList*list=(CodeDOM::XplInitializerList*)yyvsp[-1].node;
                	list->set_array(true);
	                yyval.node=list;
	            }
#line 6517 "layerd_dpp_parser_beta_tab.c"
break;
case 133:
  if (!yytrial)
#line 1549 "layerd_dpp_parser_beta.y"
{/*	OPEN_LLAVE Initializer_List COMA CLOSE_LLAVE*/
                	CodeDOM::XplInitializerList*list=(CodeDOM::XplInitializerList*)yyvsp[-2].node;
                	list->set_array(true);
	                yyval.node=list;
	            }
#line 6527 "layerd_dpp_parser_beta_tab.c"
break;
case 134:
  if (!yytrial)
#line 1555 "layerd_dpp_parser_beta.y"
{/*	OPEN_LLAVE CLOSE_LLAVE*/
                	CodeDOM::XplInitializerList*list=CodeDOM::XplInitializerList::new_list();
                	list->set_array(true);
	                yyval.node=list;
	            }
#line 6537 "layerd_dpp_parser_beta_tab.c"
break;
case 136:
  if (!yytrial)
#line 1564 "layerd_dpp_parser_beta.y"
{
                	CodeDOM::XplInitializerList*list=CodeDOM::XplInitializerList::new_list();
                	list->Childs()->InsertAtEnd(yyvsp[0].node);
                	yyval.node=list;
	            }
#line 6547 "layerd_dpp_parser_beta_tab.c"
break;
case 137:
  if (!yytrial)
#line 1570 "layerd_dpp_parser_beta.y"
{
                	CodeDOM::XplInitializerList*list=(CodeDOM::XplInitializerList*)yyvsp[-2].node;
                	list->Childs()->InsertAtEnd(yyvsp[0].node);
                	yyval.node=list;
	            }
#line 6557 "layerd_dpp_parser_beta_tab.c"
break;
case 138:
  if (!yytrial)
#line 1579 "layerd_dpp_parser_beta.y"
{/*	OP_ASTERISCO*/
					CodeDOM::XplPointerinfo*l=CodeDOM::XplType::new_pi();
					yyval.node=l;
				}
#line 6566 "layerd_dpp_parser_beta_tab.c"
break;
case 139:
  if (!yytrial)
#line 1584 "layerd_dpp_parser_beta.y"
{/*	OP_ASTERISCO*/
					CodeDOM::XplPointerinfo*l=CodeDOM::XplType::new_pi();
					l->set_ref(true);
					yyval.node=l;
				}
#line 6576 "layerd_dpp_parser_beta_tab.c"
break;
case 140:
  if (!yytrial)
#line 1590 "layerd_dpp_parser_beta.y"
{/*	OP_ASTERISCO Pointer_Modifier_List*/
					CodeDOM::XplPointerinfo*l=CodeDOM::XplType::new_pi();
					if( (yyvsp[0].num & SM_CONST)==SM_CONST)l->set_const(true);
					if( (yyvsp[0].num & SM_VOLATILE)==SM_VOLATILE)l->set_volatile(true);
					if( (yyvsp[0].num & SM_REF)==SM_REF)l->set_ref(true);
					yyval.node=l;
				}
#line 6588 "layerd_dpp_parser_beta_tab.c"
break;
case 141:
  if (!yytrial)
#line 1599 "layerd_dpp_parser_beta.y"
{/*	Complete_Class_Name OP_DOSPUNTOSDOBLE OP_ASTERISCO*/
					CodeDOM::XplPointerinfo*l=CodeDOM::XplType::new_pi();
					l->set_memberof(yyvsp[-2].str);
					yyval.node=l;
				}
#line 6598 "layerd_dpp_parser_beta_tab.c"
break;
case 142:
  if (!yytrial)
#line 1605 "layerd_dpp_parser_beta.y"
{/*	Complete_Class_Name OP_DOSPUNTOSDOBLE OP_ASTERISCO Pointer_Modifier_List*/
					CodeDOM::XplPointerinfo*l=CodeDOM::XplType::new_pi();
					l->set_memberof(yyvsp[-3].str);
					if( (yyvsp[0].num & SM_CONST)==SM_CONST)l->set_const(true);
					if( (yyvsp[0].num & SM_VOLATILE)==SM_VOLATILE)l->set_volatile(true);
					if( (yyvsp[0].num & SM_REF)==SM_REF)l->set_ref(true);
					yyval.node=l;
				}
#line 6611 "layerd_dpp_parser_beta_tab.c"
break;
case 143:
  if (!yytrial)
#line 1618 "layerd_dpp_parser_beta.y"
{/*	Pointer_Modifier*/
					yyval.num=yyvsp[0].num;
				}
#line 6619 "layerd_dpp_parser_beta_tab.c"
break;
case 144:
  if (!yytrial)
#line 1622 "layerd_dpp_parser_beta.y"
{/*	Pointer_Modifier Pointer_Modifier_List*/
					if( (yyvsp[-1].num & yyvsp[0].num)==yyvsp[0].num){
						SINTAX_ERROR("Pointer modifier duplicated.");
					}
					yyval.num=yyvsp[-1].num|yyvsp[0].num;
				}
#line 6630 "layerd_dpp_parser_beta_tab.c"
break;
case 145:
  if (!yytrial)
#line 1631 "layerd_dpp_parser_beta.y"
{yyval.num=SM_CONST;}
#line 6636 "layerd_dpp_parser_beta_tab.c"
break;
case 146:
  if (!yytrial)
#line 1632 "layerd_dpp_parser_beta.y"
{yyval.num=SM_VOLATILE;}
#line 6642 "layerd_dpp_parser_beta_tab.c"
break;
case 147:
  if (!yytrial)
#line 1633 "layerd_dpp_parser_beta.y"
{yyval.num=SM_REF;}
#line 6648 "layerd_dpp_parser_beta_tab.c"
break;
case 148:
  if (!yytrial)
#line 1638 "layerd_dpp_parser_beta.y"
{/*	OPEN_CORCHETE CLOSE_CORCHETE*/
					yyval.exp=NULL;
				}
#line 6656 "layerd_dpp_parser_beta_tab.c"
break;
case 149:
  if (!yytrial)
#line 1642 "layerd_dpp_parser_beta.y"
{/*	OPEN_CORCHETE Expression CLOSE_CORCHETE*/
					CodeDOM::XplExpression *e=CodeDOM::XplType::new_ae();
					e->set_texpression(yyvsp[-1].node);
					yyval.exp=e;
				}
#line 6666 "layerd_dpp_parser_beta_tab.c"
break;
case 150:
  if (!yytrial)
#line 1651 "layerd_dpp_parser_beta.y"
{/*	Parameter_Declarator*/
					CodeDOM::XplParameter* p=(CodeDOM::XplParameter*)yyvsp[0].node;
					CodeDOM::XplParameters* ps=new CodeDOM::XplParameters();
					p->set_number(ps->Childs()->getLenght()+1);
					ps->Childs()->InsertAtEnd(p);
					yyval.node=ps;
					/*SET_SOURCE_DATA_S(p,0);*/
				}
#line 6679 "layerd_dpp_parser_beta_tab.c"
break;
case 151:
  if (!yytrial)
#line 1660 "layerd_dpp_parser_beta.y"
{/*	Argument_Declarator_List COMA Argument_Declarator*/
					CodeDOM::XplParameter* p=(CodeDOM::XplParameter*)yyvsp[0].node;
					CodeDOM::XplParameters* ps=(CodeDOM::XplParameters*)yyvsp[-2].node;
					p->set_number(ps->Childs()->getLenght()+1);
					ps->Childs()->InsertAtEnd(p);
					yyval.node=ps;
					/*SET_SOURCE_DATA_S(p,0);*/
				}
#line 6692 "layerd_dpp_parser_beta_tab.c"
break;
case 152:
#line 1671 "layerd_dpp_parser_beta.y"
{YYVALID;}
#line 6697 "layerd_dpp_parser_beta_tab.c"
  if (!yytrial)
#line 1672 "layerd_dpp_parser_beta.y"
{/*	Type_Declarator Declarator*/
					CodeDOM::XplType* t=(CodeDOM::XplType*)yyvsp[-1].nodos[0];
					CodeDOM::XplParameter* p=CodeDOM::XplParameters::new_P();
					p->set_direction(CodeDOM::ZOEPARAMETERDIRECTION_ENUM_IN);
					p->set_type(t);
					if(yyvsp[0].nodos[0]!=NULL){
						p->set_name(*(CodeDOM::string*)yyvsp[0].nodos[0]);
						delete (CodeDOM::string*)yyvsp[0].nodos[0];
					}
					if(yyvsp[0].nodos[2]!=NULL)p->set_i((CodeDOM::XplInitializerList*)yyvsp[0].nodos[2]);
					SetParameterModifiers(p,(unsigned)yyvsp[-1].nodos[1]);
					yyval.node=p;
					SET_SOURCE_DATA_S(t,-1);
				}
#line 6714 "layerd_dpp_parser_beta_tab.c"
break;
case 153:
  if (!yytrial)
#line 1690 "layerd_dpp_parser_beta.y"
{/*	Storage_Mod*/
					yyval.num=yyvsp[0].num;
				}
#line 6722 "layerd_dpp_parser_beta_tab.c"
break;
case 154:
  if (!yytrial)
#line 1694 "layerd_dpp_parser_beta.y"
{/*	Storage_Mod_List Storage_Mod*/
					if( (yyvsp[-1].num & yyvsp[0].num)==yyvsp[0].num){
						WARNING_MESSAGE("Storage modifier duplicated.");
					}
					yyval.num=yyvsp[-1].num|yyvsp[0].num;
				}
#line 6733 "layerd_dpp_parser_beta_tab.c"
break;
case 155:
  if (!yytrial)
#line 1703 "layerd_dpp_parser_beta.y"
{yyval.num=yyvsp[0].num;}
#line 6739 "layerd_dpp_parser_beta_tab.c"
break;
case 156:
  if (!yytrial)
#line 1704 "layerd_dpp_parser_beta.y"
{yyval.num=SM_STATIC;}
#line 6745 "layerd_dpp_parser_beta_tab.c"
break;
case 157:
  if (!yytrial)
#line 1705 "layerd_dpp_parser_beta.y"
{yyval.num=SM_CONST;}
#line 6751 "layerd_dpp_parser_beta_tab.c"
break;
case 158:
  if (!yytrial)
#line 1706 "layerd_dpp_parser_beta.y"
{yyval.num=SM_VOLATILE;}
#line 6757 "layerd_dpp_parser_beta_tab.c"
break;
case 159:
  if (!yytrial)
#line 1707 "layerd_dpp_parser_beta.y"
{yyval.num=SM_EXTERN;}
#line 6763 "layerd_dpp_parser_beta_tab.c"
break;
case 160:
  if (!yytrial)
#line 1708 "layerd_dpp_parser_beta.y"
{yyval.num=SM_EXTENSION;}
#line 6769 "layerd_dpp_parser_beta_tab.c"
break;
case 161:
  if (!yytrial)
#line 1709 "layerd_dpp_parser_beta.y"
{yyval.num=SM_FACTORY;}
#line 6775 "layerd_dpp_parser_beta_tab.c"
break;
case 162:
  if (!yytrial)
#line 1710 "layerd_dpp_parser_beta.y"
{yyval.num=SM_INTERACTIVE;}
#line 6781 "layerd_dpp_parser_beta_tab.c"
break;
case 163:
  if (!yytrial)
#line 1711 "layerd_dpp_parser_beta.y"
{yyval.num=SM_KEYWORD;}
#line 6787 "layerd_dpp_parser_beta_tab.c"
break;
case 164:
  if (!yytrial)
#line 1712 "layerd_dpp_parser_beta.y"
{yyval.num=SM_FINAL;}
#line 6793 "layerd_dpp_parser_beta_tab.c"
break;
case 165:
  if (!yytrial)
#line 1713 "layerd_dpp_parser_beta.y"
{yyval.num=SM_NEW;}
#line 6799 "layerd_dpp_parser_beta_tab.c"
break;
case 166:
  if (!yytrial)
#line 1714 "layerd_dpp_parser_beta.y"
{yyval.num=SM_OVERRIDE;}
#line 6805 "layerd_dpp_parser_beta_tab.c"
break;
case 167:
  if (!yytrial)
#line 1715 "layerd_dpp_parser_beta.y"
{yyval.num=SM_VIRTUAL;}
#line 6811 "layerd_dpp_parser_beta_tab.c"
break;
case 168:
  if (!yytrial)
#line 1716 "layerd_dpp_parser_beta.y"
{yyval.num=SM_NONVIRTUAL;}
#line 6817 "layerd_dpp_parser_beta_tab.c"
break;
case 169:
  if (!yytrial)
#line 1717 "layerd_dpp_parser_beta.y"
{yyval.num=SM_EXEC;}
#line 6823 "layerd_dpp_parser_beta_tab.c"
break;
case 170:
  if (!yytrial)
#line 1718 "layerd_dpp_parser_beta.y"
{yyval.num=SM_FPOINTER;}
#line 6829 "layerd_dpp_parser_beta_tab.c"
break;
case 171:
  if (!yytrial)
#line 1719 "layerd_dpp_parser_beta.y"
{yyval.num=SM_FORCE;}
#line 6835 "layerd_dpp_parser_beta_tab.c"
break;
case 172:
  if (!yytrial)
#line 1720 "layerd_dpp_parser_beta.y"
{yyval.num=SM_ABSTRACT;}
#line 6841 "layerd_dpp_parser_beta_tab.c"
break;
case 173:
  if (!yytrial)
#line 1721 "layerd_dpp_parser_beta.y"
{yyval.num=SM_IN;}
#line 6847 "layerd_dpp_parser_beta_tab.c"
break;
case 174:
  if (!yytrial)
#line 1722 "layerd_dpp_parser_beta.y"
{yyval.num=SM_OUT;}
#line 6853 "layerd_dpp_parser_beta_tab.c"
break;
case 175:
  if (!yytrial)
#line 1723 "layerd_dpp_parser_beta.y"
{yyval.num=SM_INOUT;}
#line 6859 "layerd_dpp_parser_beta_tab.c"
break;
case 176:
  if (!yytrial)
#line 1724 "layerd_dpp_parser_beta.y"
{yyval.num=SM_PARAMS;}
#line 6865 "layerd_dpp_parser_beta_tab.c"
break;
case 177:
  if (!yytrial)
#line 1725 "layerd_dpp_parser_beta.y"
{yyval.num=SM_INAME;}
#line 6871 "layerd_dpp_parser_beta_tab.c"
break;
case 178:
  if (!yytrial)
#line 1726 "layerd_dpp_parser_beta.y"
{yyval.num=SM_EXPRESSION;}
#line 6877 "layerd_dpp_parser_beta_tab.c"
break;
case 179:
  if (!yytrial)
#line 1730 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 6883 "layerd_dpp_parser_beta_tab.c"
break;
case 180:
  if (!yytrial)
#line 1731 "layerd_dpp_parser_beta.y"
{yyval.node=NULL;}
#line 6889 "layerd_dpp_parser_beta_tab.c"
break;
case 181:
#line 1735 "layerd_dpp_parser_beta.y"
{YYVALID;}
#line 6894 "layerd_dpp_parser_beta_tab.c"
  if (!yytrial)
#line 1736 "layerd_dpp_parser_beta.y"
{
					yyval.node=CreateFunction((unsigned int)yyvsp[-5].nodos[1]/*Storage*/,(CodeDOM::XplType*)yyvsp[-5].nodos[0]/*Type_Decl*/,(CodeDOM::XplFunction*)yyvsp[-4].node/*Decl_F*/,(CodeDOM::XplParameters*)yyvsp[-2].node/*Parameters*/,(CodeDOM::XplBaseInitializers*)NULL/*Base_Init*/,(CodeDOM::XplFunctionBody*)yyvsp[0].node/*Block*/);
					SET_SOURCE_DATA(((CodeDOM::XplFunction*)yyval.node),-5,-1);
				}
#line 6901 "layerd_dpp_parser_beta_tab.c"
break;
case 182:
#line 1740 "layerd_dpp_parser_beta.y"
{YYVALID;}
#line 6906 "layerd_dpp_parser_beta_tab.c"
  if (!yytrial)
#line 1741 "layerd_dpp_parser_beta.y"
{
					yyval.node=CreateFunction((unsigned int)yyvsp[-4].nodos[1]/*Storage*/,(CodeDOM::XplType*)yyvsp[-4].nodos[0]/*Type_Decl*/,(CodeDOM::XplFunction*)yyvsp[-3].node/*Decl_F*/,(CodeDOM::XplParameters*)NULL/*Parameters*/,(CodeDOM::XplBaseInitializers*)NULL/*Base_Init*/,(CodeDOM::XplFunctionBody*)yyvsp[0].node/*Block*/);
					SET_SOURCE_DATA(((CodeDOM::XplFunction*)yyval.node),-4,-1);
				}
#line 6913 "layerd_dpp_parser_beta_tab.c"
break;
case 183:
#line 1745 "layerd_dpp_parser_beta.y"
{YYVALID;}
#line 6918 "layerd_dpp_parser_beta_tab.c"
  if (!yytrial)
#line 1746 "layerd_dpp_parser_beta.y"
{
					yyval.node=CreateFunction((unsigned int)yyvsp[-6].nodos[1]/*Storage*/,(CodeDOM::XplType*)yyvsp[-6].nodos[0]/*Type_Decl*/,(CodeDOM::XplFunction*)yyvsp[-5].node/*Decl_F*/,(CodeDOM::XplParameters*)yyvsp[-3].node/*Parameters*/,(CodeDOM::XplBaseInitializers*)yyvsp[-1].node/*Base_Init*/,(CodeDOM::XplFunctionBody*)yyvsp[0].node/*Block*/);
					SET_SOURCE_DATA(((CodeDOM::XplFunction*)yyval.node),-5,-2);
				}
#line 6925 "layerd_dpp_parser_beta_tab.c"
break;
case 184:
#line 1750 "layerd_dpp_parser_beta.y"
{YYVALID;}
#line 6930 "layerd_dpp_parser_beta_tab.c"
  if (!yytrial)
#line 1751 "layerd_dpp_parser_beta.y"
{
					yyval.node=CreateFunction((unsigned int)yyvsp[-5].nodos[1]/*Storage*/,(CodeDOM::XplType*)yyvsp[-5].nodos[0]/*Type_Decl*/,(CodeDOM::XplFunction*)yyvsp[-4].node/*Decl_F*/,(CodeDOM::XplParameters*)NULL/*Parameters*/,(CodeDOM::XplBaseInitializers*)yyvsp[-1].node/*Base_Init*/,(CodeDOM::XplFunctionBody*)yyvsp[0].node/*Block*/);
					SET_SOURCE_DATA(((CodeDOM::XplFunction*)yyval.node),-5,-2);
				}
#line 6937 "layerd_dpp_parser_beta_tab.c"
break;
case 185:
#line 1757 "layerd_dpp_parser_beta.y"
{YYVALID;}
#line 6942 "layerd_dpp_parser_beta_tab.c"
  if (!yytrial)
#line 1758 "layerd_dpp_parser_beta.y"
{
					yyval.node=CreateFunction(yyvsp[-5].num/*Storage*/,(CodeDOM::XplType*)NULL/*Type_Decl*/,(CodeDOM::XplFunction*)yyvsp[-4].node/*Decl_F*/,(CodeDOM::XplParameters*)NULL/*Parameters*/,(CodeDOM::XplBaseInitializers*)yyvsp[-1].node/*Base_Init*/,(CodeDOM::XplFunctionBody*)yyvsp[0].node/*Block*/);
					SET_SOURCE_DATA(((CodeDOM::XplFunction*)yyval.node),-5,-3);
				}
#line 6949 "layerd_dpp_parser_beta_tab.c"
break;
case 186:
#line 1762 "layerd_dpp_parser_beta.y"
{YYVALID;}
#line 6954 "layerd_dpp_parser_beta_tab.c"
  if (!yytrial)
#line 1763 "layerd_dpp_parser_beta.y"
{
					yyval.node=CreateFunction(yyvsp[-6].num/*Storage*/,(CodeDOM::XplType*)NULL/*Type_Decl*/,(CodeDOM::XplFunction*)yyvsp[-5].node/*Decl_F*/,(CodeDOM::XplParameters*)yyvsp[-3].node/*Parameters*/,(CodeDOM::XplBaseInitializers*)yyvsp[-1].node/*Base_Init*/,(CodeDOM::XplFunctionBody*)yyvsp[0].node/*Block*/);
					SET_SOURCE_DATA(((CodeDOM::XplFunction*)yyval.node),-5,-2);
				}
#line 6961 "layerd_dpp_parser_beta_tab.c"
break;
case 187:
#line 1767 "layerd_dpp_parser_beta.y"
{YYVALID;}
#line 6966 "layerd_dpp_parser_beta_tab.c"
  if (!yytrial)
#line 1768 "layerd_dpp_parser_beta.y"
{
					yyval.node=CreateFunction(0/*Storage*/,(CodeDOM::XplType*)NULL/*Type_Decl*/,(CodeDOM::XplFunction*)yyvsp[-4].node/*Decl_F*/,(CodeDOM::XplParameters*)NULL/*Parameters*/,(CodeDOM::XplBaseInitializers*)yyvsp[-1].node/*Base_Init*/,(CodeDOM::XplFunctionBody*)yyvsp[0].node/*Block*/);
					SET_SOURCE_DATA(((CodeDOM::XplFunction*)yyval.node),-4,-2);
				}
#line 6973 "layerd_dpp_parser_beta_tab.c"
break;
case 188:
#line 1772 "layerd_dpp_parser_beta.y"
{YYVALID;}
#line 6978 "layerd_dpp_parser_beta_tab.c"
  if (!yytrial)
#line 1773 "layerd_dpp_parser_beta.y"
{
					yyval.node=CreateFunction(0/*Storage*/,(CodeDOM::XplType*)NULL/*Type_Decl*/,(CodeDOM::XplFunction*)yyvsp[-5].node/*Decl_F*/,(CodeDOM::XplParameters*)yyvsp[-3].node/*Parameters*/,(CodeDOM::XplBaseInitializers*)yyvsp[-1].node/*Base_Init*/,(CodeDOM::XplFunctionBody*)yyvsp[0].node/*Block*/);
					SET_SOURCE_DATA(((CodeDOM::XplFunction*)yyval.node),-5,-2);
				}
#line 6985 "layerd_dpp_parser_beta_tab.c"
break;
case 189:
#line 1778 "layerd_dpp_parser_beta.y"
{YYVALID;}
#line 6990 "layerd_dpp_parser_beta_tab.c"
  if (!yytrial)
#line 1779 "layerd_dpp_parser_beta.y"
{
					yyval.node=CreateFunction(yyvsp[-4].num/*Storage*/,(CodeDOM::XplType*)NULL/*Type_Decl*/,(CodeDOM::XplFunction*)yyvsp[-3].node/*Decl_F*/,(CodeDOM::XplParameters*)NULL/*Parameters*/,(CodeDOM::XplBaseInitializers*)NULL/*Base_Init*/,(CodeDOM::XplFunctionBody*)yyvsp[0].node/*Block*/);
					SET_SOURCE_DATA(((CodeDOM::XplFunction*)yyval.node),-3,-1);
				}
#line 6997 "layerd_dpp_parser_beta_tab.c"
break;
case 190:
#line 1783 "layerd_dpp_parser_beta.y"
{YYVALID;}
#line 7002 "layerd_dpp_parser_beta_tab.c"
  if (!yytrial)
#line 1784 "layerd_dpp_parser_beta.y"
{
					yyval.node=CreateFunction(yyvsp[-5].num/*Storage*/,(CodeDOM::XplType*)NULL/*Type_Decl*/,(CodeDOM::XplFunction*)yyvsp[-4].node/*Decl_F*/,(CodeDOM::XplParameters*)yyvsp[-2].node/*Parameters*/,(CodeDOM::XplBaseInitializers*)NULL/*Base_Init*/,(CodeDOM::XplFunctionBody*)yyvsp[0].node/*Block*/);
					SET_SOURCE_DATA(((CodeDOM::XplFunction*)yyval.node),-4,-1);
				}
#line 7009 "layerd_dpp_parser_beta_tab.c"
break;
case 191:
#line 1788 "layerd_dpp_parser_beta.y"
{YYVALID;}
#line 7014 "layerd_dpp_parser_beta_tab.c"
  if (!yytrial)
#line 1789 "layerd_dpp_parser_beta.y"
{
					yyval.node=CreateFunction(0/*Storage*/,(CodeDOM::XplType*)NULL/*Type_Decl*/,(CodeDOM::XplFunction*)yyvsp[-3].node/*Decl_F*/,(CodeDOM::XplParameters*)NULL/*Parameters*/,(CodeDOM::XplBaseInitializers*)NULL/*Base_Init*/,(CodeDOM::XplFunctionBody*)yyvsp[0].node/*Block*/);
					SET_SOURCE_DATA(((CodeDOM::XplFunction*)yyval.node),-3,-1);
				}
#line 7021 "layerd_dpp_parser_beta_tab.c"
break;
case 192:
#line 1793 "layerd_dpp_parser_beta.y"
{YYVALID;}
#line 7026 "layerd_dpp_parser_beta_tab.c"
  if (!yytrial)
#line 1794 "layerd_dpp_parser_beta.y"
{
					yyval.node=CreateFunction(0/*Storage*/,(CodeDOM::XplType*)NULL/*Type_Decl*/,(CodeDOM::XplFunction*)yyvsp[-4].node/*Decl_F*/,(CodeDOM::XplParameters*)yyvsp[-2].node/*Parameters*/,(CodeDOM::XplBaseInitializers*)NULL/*Base_Init*/,(CodeDOM::XplFunctionBody*)yyvsp[0].node/*Block*/);
					SET_SOURCE_DATA(((CodeDOM::XplFunction*)yyval.node),-4,-1);
				}
#line 7033 "layerd_dpp_parser_beta_tab.c"
break;
case 193:
#line 1801 "layerd_dpp_parser_beta.y"
{YYVALID;}
#line 7038 "layerd_dpp_parser_beta_tab.c"
  if (!yytrial)
#line 1802 "layerd_dpp_parser_beta.y"
{/*	Type_Declarator Declarator_List PUNTO_COMA*/
					CodeDOM::XplDeclaratorlist* dl=(CodeDOM::XplDeclaratorlist*)yyvsp[-1].node;
					CodeDOM::XplDeclarator*d =NULL;
					CodeDOM::XplField* f=NULL;
					CodeDOM::XplType* t=NULL;
					CodeDOM::XplNodeList*cm=new CodeDOM::XplNodeList();
					for(d=(CodeDOM::XplDeclarator*)dl->Childs()->FirstNode();d!=NULL;d=(CodeDOM::XplDeclarator*)dl->Childs()->NextNode()){
						t=(CodeDOM::XplType*)yyvsp[-2].nodos[0]->Clone();
						t->set_ElementName(DT("type"));
						/*Ahora creo el field y copio los datos del declarator*/
						f=CodeDOM::XplClass::new_Field();
						f->set_name(d->get_name());
						f->set_type(t);
						d->set_type(NULL);
						f->set_i(d->get_i());
						d->set_i(NULL);
						SetFieldStorage(f,(unsigned)yyvsp[-2].nodos[1]);
						cm->InsertAtEnd(f);
					}
					delete dl;
					yyval.list=cm;
					SET_SOURCE_DATA(f,-2,0);
				}
#line 7064 "layerd_dpp_parser_beta_tab.c"
break;
case 194:
  if (!yytrial)
#line 1829 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 7070 "layerd_dpp_parser_beta_tab.c"
break;
case 195:
  if (!yytrial)
#line 1834 "layerd_dpp_parser_beta.y"
{/*	Base_Initializer*/
					CodeDOM::XplBaseInitializers *bi=CodeDOM::XplFunction::new_BaseInitializers();
					bi->Childs()->InsertAtEnd(yyvsp[0].node);
					yyval.node=bi;
				}
#line 7080 "layerd_dpp_parser_beta_tab.c"
break;
case 196:
  if (!yytrial)
#line 1840 "layerd_dpp_parser_beta.y"
{/*	Base_Initializers COMA Base_Initializer*/
					CodeDOM::XplBaseInitializers *bi=(CodeDOM::XplBaseInitializers*)yyvsp[-2].node;
					bi->Childs()->InsertAtEnd(yyvsp[0].node);
					yyval.node=bi;
				}
#line 7090 "layerd_dpp_parser_beta_tab.c"
break;
case 197:
  if (!yytrial)
#line 1849 "layerd_dpp_parser_beta.y"
{/*	Complete_Class_Name OPEN_PARENTESIS Expression_List CLOSE_PARENTESIS*/
					CodeDOM::XplBaseInitializer *i=CodeDOM::XplBaseInitializers::new_i();
					i->set_className(yyvsp[-3].str);
					i->set_params((CodeDOM::XplExpressionlist*)yyvsp[-1].node);
					yyval.node=i;
					SET_SOURCE_DATA(i,-3,0);
				}
#line 7102 "layerd_dpp_parser_beta_tab.c"
break;
case 198:
  if (!yytrial)
#line 1857 "layerd_dpp_parser_beta.y"
{/*	Complete_Class_Name OPEN_PARENTESIS CLOSE_PARENTESIS*/
					CodeDOM::XplBaseInitializer *i=CodeDOM::XplBaseInitializers::new_i();
					i->set_className(yyvsp[-2].str);
					i->set_params(CodeDOM::XplBaseInitializer::new_params());
					yyval.node=i;
					SET_SOURCE_DATA(i,-2,0);
				}
#line 7114 "layerd_dpp_parser_beta_tab.c"
break;
case 199:
#line 1867 "layerd_dpp_parser_beta.y"
{YYVALID;}
#line 7119 "layerd_dpp_parser_beta_tab.c"
  if (!yytrial)
#line 1868 "layerd_dpp_parser_beta.y"
{/*	R_Type_Decl PC_PROPERTY Complete_Class_Name OPEN_LLAVE Block CLOSE_LLAVE*/
					CodeDOM::XplProperty*p=CodeDOM::XplClass::new_Property();

					p->set_type((CodeDOM::XplType*)yyvsp[-3].node);
					p->set_name(yyvsp[-1].str);
					p->set_storage(CodeDOM::ZOEVARSTORAGE_ENUM_AUTO);
					if(yyvsp[0].node!=NULL)p->set_body((CodeDOM::XplFunctionBody*)yyvsp[0].node);
					SetPropertyStorage(p,(unsigned)yyvsp[-3].nodos[1]);

					yyval.node=p;
					SET_SOURCE_DATA_S(p,-2);
				}
#line 7134 "layerd_dpp_parser_beta_tab.c"
break;
case 200:
  if (!yytrial)
#line 1885 "layerd_dpp_parser_beta.y"
{/*	DeclaratorA*/
					yyval.nodos[0]=(CodeDOM::XplNode*)new CodeDOM::string(yyvsp[0].str);		/*Identificador*/
					yyval.nodos[1]=NULL;			/*Inicializador*/
					yyval.nodos[2]=NULL;
					RET_POS=GET_PARSER_POS[0];
				}
#line 7145 "layerd_dpp_parser_beta_tab.c"
break;
case 201:
  if (!yytrial)
#line 1892 "layerd_dpp_parser_beta.y"
{/*	DeclaratorA Initializer*/
					yyval.nodos[0]=(CodeDOM::XplNode*)new CodeDOM::string(yyvsp[-1].str);		/*Identificador*/
					yyval.nodos[1]=yyvsp[0].node;		/*Inicializador*/
					yyval.nodos[2]=NULL;
					RET_POS=GET_PARSER_POS[-1];
				}
#line 7156 "layerd_dpp_parser_beta_tab.c"
break;
case 202:
  if (!yytrial)
#line 1902 "layerd_dpp_parser_beta.y"
{/*	Declarator*/
					CodeDOM::XplDeclaratorlist*l=new CodeDOM::XplDeclaratorlist();
					CodeDOM::XplDeclarator* d=CodeDOM::XplDeclaratorlist::new_d();
					if(yyvsp[0].nodos[0]!=NULL){
						d->set_name(*(CodeDOM::string*)yyvsp[0].nodos[0]);
						delete (CodeDOM::string*)yyvsp[0].nodos[0];
					}
					if(yyvsp[0].nodos[1]!=NULL)d->set_i((CodeDOM::XplInitializerList*)yyvsp[0].nodos[1]);
					l->Childs()->InsertAtEnd(d);
					yyval.node=l;
					SET_SOURCE_DATA_S(d,0);
				}
#line 7173 "layerd_dpp_parser_beta_tab.c"
break;
case 203:
  if (!yytrial)
#line 1915 "layerd_dpp_parser_beta.y"
{/*	Declarator_List COMA Declarator*/
					CodeDOM::XplDeclaratorlist*l=(CodeDOM::XplDeclaratorlist*)yyvsp[-2].node;
					CodeDOM::XplDeclarator* d=CodeDOM::XplDeclaratorlist::new_d();
					if(yyvsp[0].nodos[0]!=NULL){
						d->set_name(*(CodeDOM::string*)yyvsp[0].nodos[0]);
						delete (CodeDOM::string*)yyvsp[0].nodos[0];
					}
					if(yyvsp[0].nodos[1]!=NULL)d->set_i((CodeDOM::XplInitializerList*)yyvsp[0].nodos[1]);
					l->Childs()->InsertAtEnd(d);
					yyval.node=l;
					SET_SOURCE_DATA_S(d,0);
				}
#line 7190 "layerd_dpp_parser_beta_tab.c"
break;
case 204:
  if (!yytrial)
#line 1935 "layerd_dpp_parser_beta.y"
{/*	OPEN_LLAVE Block_Statements CLOSE_LLAVE*/
					yyval.node=yyvsp[-1].node;
					SET_SOURCE_DATA(((CodeDOM::XplFunctionBody*)yyvsp[-1].node),-2,0);
				}
#line 7199 "layerd_dpp_parser_beta_tab.c"
break;
case 205:
  if (!yytrial)
#line 1940 "layerd_dpp_parser_beta.y"
{/*	OPEN_LLAVE CLOSE_LLAVE*/
					CodeDOM::XplFunctionBody *fb=new CodeDOM::XplFunctionBody();
					yyval.node=fb;
					SET_SOURCE_DATA(fb,-1,0);
				}
#line 7209 "layerd_dpp_parser_beta_tab.c"
break;
case 206:
  if (!yytrial)
#line 1956 "layerd_dpp_parser_beta.y"
{/*	PC_GET Block*/
					yyvsp[0].node->set_ElementName(L"Get");
					yyval.node=yyvsp[0].node;
				}
#line 7218 "layerd_dpp_parser_beta_tab.c"
break;
case 207:
  if (!yytrial)
#line 1961 "layerd_dpp_parser_beta.y"
{/*	PC_GET PUNTO_COMA*/
					CodeDOM::XplFunctionBody* bk=new CodeDOM::XplFunctionBody();
					bk->set_ElementName(L"Get");
					bk->set_lddata(L"%abstract%");
					yyval.node=bk;
					SET_SOURCE_DATA(bk,-1,0);
				}
#line 7230 "layerd_dpp_parser_beta_tab.c"
break;
case 208:
  if (!yytrial)
#line 1972 "layerd_dpp_parser_beta.y"
{/*	PC_PUT Block*/
					yyvsp[0].node->set_ElementName(L"Set");
					yyval.node=yyvsp[0].node;
				}
#line 7239 "layerd_dpp_parser_beta_tab.c"
break;
case 209:
  if (!yytrial)
#line 1977 "layerd_dpp_parser_beta.y"
{/*	PC_PUT PUNTO_COMA*/
					CodeDOM::XplFunctionBody* bk=new CodeDOM::XplFunctionBody();
					bk->set_ElementName(L"Set");
					bk->set_lddata(L"%abstract%");
					yyval.node=bk;
					SET_SOURCE_DATA(bk,-1,0);
				}
#line 7251 "layerd_dpp_parser_beta_tab.c"
break;
case 210:
  if (!yytrial)
#line 1988 "layerd_dpp_parser_beta.y"
{/*	Block_Statement*/
					/*ASSING_COMMENT($1.node);*/
					CodeDOM::XplFunctionBody *fb=new CodeDOM::XplFunctionBody();
					fb->Childs()->InsertAtEnd(yyvsp[0].node);
					if(yyvsp[0].node->get_ElementName()==L"label"){
						fb->Childs()->InsertAtEnd(yyvsp[0].nodos[1]);
						yyvsp[0].nodos[1]=NULL;
					}
					yyval.node=fb;
				}
#line 7266 "layerd_dpp_parser_beta_tab.c"
break;
case 211:
  if (!yytrial)
#line 1999 "layerd_dpp_parser_beta.y"
{/*	Block_Statements Block_Statement*/
					CodeDOM::XplFunctionBody *fb=(CodeDOM::XplFunctionBody*)yyvsp[-1].node;
					if(fb==NULL)fb=new CodeDOM::XplFunctionBody();
					/*ASSING_COMMENT($2.node);*/
					fb->Childs()->InsertAtEnd(yyvsp[0].node);
					if(yyvsp[0].node->get_ElementName()==L"label"){
						fb->Childs()->InsertAtEnd(yyvsp[0].nodos[1]);
						yyvsp[0].nodos[1]=NULL;
					}
					yyval.node=fb;
				}
#line 7282 "layerd_dpp_parser_beta_tab.c"
break;
case 212:
  if (!yytrial)
#line 2014 "layerd_dpp_parser_beta.y"
{
					yyval=yyvsp[0];
				}
#line 7290 "layerd_dpp_parser_beta_tab.c"
break;
case 213:
  if (!yytrial)
#line 2018 "layerd_dpp_parser_beta.y"
{
					((CodeDOM::XplDocumentation*)yyvsp[-1].node)->set_short( ((CodeDOM::XplDocumentation*)yyvsp[-1].node)->get_short() + ((CodeDOM::XplDocumentation*)yyvsp[0].node)->get_short() );
					yyval=yyvsp[-1];
				}
#line 7299 "layerd_dpp_parser_beta_tab.c"
break;
case 214:
#line 2025 "layerd_dpp_parser_beta.y"
{YYVALID;}
#line 7304 "layerd_dpp_parser_beta_tab.c"
  if (!yytrial)
#line 2025 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 7308 "layerd_dpp_parser_beta_tab.c"
break;
case 215:
#line 2026 "layerd_dpp_parser_beta.y"
{YYVALID;}
#line 7313 "layerd_dpp_parser_beta_tab.c"
  if (!yytrial)
#line 2026 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 7317 "layerd_dpp_parser_beta_tab.c"
break;
case 216:
  if (!yytrial)
#line 2031 "layerd_dpp_parser_beta.y"
{/*	OPEN_LLAVE WC_Block_Statements CLOSE_LLAVE*/
					yyval.node=yyvsp[-1].node;
				}
#line 7325 "layerd_dpp_parser_beta_tab.c"
break;
case 217:
  if (!yytrial)
#line 2039 "layerd_dpp_parser_beta.y"
{/*	OPEN_LLAVE CLOSE_LLAVE*/
					CodeDOM::XplFunctionBody *fb=new CodeDOM::XplFunctionBody();
					yyval.node=fb;
					SET_SOURCE_DATA(fb,-1,0);
				}
#line 7335 "layerd_dpp_parser_beta_tab.c"
break;
case 218:
  if (!yytrial)
#line 2048 "layerd_dpp_parser_beta.y"
{/*	OPEN_LLAVE WC_Block_Statements CLOSE_LLAVE*/
					yyval.node=yyvsp[-2].node;
				}
#line 7343 "layerd_dpp_parser_beta_tab.c"
break;
case 219:
  if (!yytrial)
#line 2056 "layerd_dpp_parser_beta.y"
{/*	WC_ClassInterfaceUnion_Decl*/
					yyvsp[0].node->set_doc( ((CodeDOM::XplDocumentation*)yyvsp[-1].node)->get_short() );
					yyvsp[0].node->set_ElementName(L"class");
					yyval.node=yyvsp[0].node;
				}
#line 7353 "layerd_dpp_parser_beta_tab.c"
break;
case 220:
  if (!yytrial)
#line 2062 "layerd_dpp_parser_beta.y"
{/*	WC_Block_Statements*/
					yyvsp[0].node->set_ElementName(L"bk");
					yyval.node=yyvsp[0].node;
				}
#line 7362 "layerd_dpp_parser_beta_tab.c"
break;
case 221:
  if (!yytrial)
#line 2067 "layerd_dpp_parser_beta.y"
{/*	WC_ClassInterfaceUnion_Decl*/
					yyvsp[0].node->set_ElementName(L"class");
					yyval.node=yyvsp[0].node;
				}
#line 7371 "layerd_dpp_parser_beta_tab.c"
break;
case 222:
  if (!yytrial)
#line 2072 "layerd_dpp_parser_beta.y"
{/*	Compilation_Unit*/
					yyvsp[0].node->set_ElementName(L"progunit");
					yyval.node=yyvsp[0].node;
				}
#line 7380 "layerd_dpp_parser_beta_tab.c"
break;
case 223:
  if (!yytrial)
#line 2080 "layerd_dpp_parser_beta.y"
{/*	Class_Decl_Block*/
					CodeDOM::XplClassMembersList* list = CodeDOM::XplWriteCodeBody::new_classmembers();

					CodeDOM::XplNodeList* members=(CodeDOM::XplNodeList*)yyvsp[0].nodos[0];
					SetClassMembers(list->Childs(), members, false);
					/*for(CodeDOM::XplNode* m2=members->FirstNode();m2!=NULL;m2=members->NextNode()){*/
					/*	list->Childs()->InsertAtEnd(m2);*/
					/*}*/
					yyval.node=list;
				}
#line 7395 "layerd_dpp_parser_beta_tab.c"
break;
case 224:
#line 2093 "layerd_dpp_parser_beta.y"
{YYVALID;}
#line 7400 "layerd_dpp_parser_beta_tab.c"
  if (!yytrial)
#line 2094 "layerd_dpp_parser_beta.y"
{/*	Local_Variable_Declaration PUNTO_COMA*/
					yyvsp[-1].node->set_ElementName(L"Decls");
					yyval.node=yyvsp[-1].node;
				}
#line 7407 "layerd_dpp_parser_beta_tab.c"
break;
case 225:
  if (!yytrial)
#line 2102 "layerd_dpp_parser_beta.y"
{/*	Type_Declarator Declarator_List*/
					CodeDOM::XplDeclaratorlist* dl=(CodeDOM::XplDeclaratorlist*)yyvsp[0].node;
					CodeDOM::XplDeclarator*d =NULL;
					CodeDOM::XplType* t=NULL;
					for(d=(CodeDOM::XplDeclarator*)dl->Childs()->FirstNode();d!=NULL;d=(CodeDOM::XplDeclarator*)dl->Childs()->NextNode()){
						t=(CodeDOM::XplType*)yyvsp[-1].nodos[0];
						if(t==NULL){
							SINTAX_ERROR("invalid declaration.");
							t = new CodeDOM::XplType();
						}
						t=(CodeDOM::XplType*)t->Clone();
						t->set_ElementName(DT("type"));
						d->set_type(t);
						SetLocalVarsModifiers(d,(unsigned)yyvsp[-1].nodos[1]);
					}
					/*/Borro el tipo temporal en el nodo 1*/
					delete yyvsp[-1].nodos[0];
					yyval.node=dl;
				}
#line 7431 "layerd_dpp_parser_beta_tab.c"
break;
case 226:
  if (!yytrial)
#line 2125 "layerd_dpp_parser_beta.y"
{/*	Block*/
					tempNode=yyvsp[0].node;
					tempNode->set_ElementName(L"bk");
					yyval.node=tempNode;
				}
#line 7441 "layerd_dpp_parser_beta_tab.c"
break;
case 227:
  if (!yytrial)
#line 2130 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 7447 "layerd_dpp_parser_beta_tab.c"
break;
case 228:
  if (!yytrial)
#line 2131 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 7453 "layerd_dpp_parser_beta_tab.c"
break;
case 229:
  if (!yytrial)
#line 2132 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 7459 "layerd_dpp_parser_beta_tab.c"
break;
case 230:
  if (!yytrial)
#line 2133 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 7465 "layerd_dpp_parser_beta_tab.c"
break;
case 231:
  if (!yytrial)
#line 2134 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 7471 "layerd_dpp_parser_beta_tab.c"
break;
case 232:
  if (!yytrial)
#line 2135 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 7477 "layerd_dpp_parser_beta_tab.c"
break;
case 233:
  if (!yytrial)
#line 2136 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 7483 "layerd_dpp_parser_beta_tab.c"
break;
case 234:
  if (!yytrial)
#line 2137 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 7489 "layerd_dpp_parser_beta_tab.c"
break;
case 235:
  if (!yytrial)
#line 2138 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 7495 "layerd_dpp_parser_beta_tab.c"
break;
case 236:
  if (!yytrial)
#line 2139 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 7501 "layerd_dpp_parser_beta_tab.c"
break;
case 237:
  if (!yytrial)
#line 2140 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 7507 "layerd_dpp_parser_beta_tab.c"
break;
case 238:
  if (!yytrial)
#line 2141 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 7513 "layerd_dpp_parser_beta_tab.c"
break;
case 239:
  if (!yytrial)
#line 2142 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 7519 "layerd_dpp_parser_beta_tab.c"
break;
case 240:
  if (!yytrial)
#line 2143 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 7525 "layerd_dpp_parser_beta_tab.c"
break;
case 241:
  if (!yytrial)
#line 2144 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 7531 "layerd_dpp_parser_beta_tab.c"
break;
case 242:
  if (!yytrial)
#line 2145 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 7537 "layerd_dpp_parser_beta_tab.c"
break;
case 243:
  if (!yytrial)
#line 2146 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 7543 "layerd_dpp_parser_beta_tab.c"
break;
case 244:
  if (!yytrial)
#line 2148 "layerd_dpp_parser_beta.y"
{/*	error PUNTO_COMA*/
					SINTAX_ERROR("invalid instruction before semicolon (;).");
					CodeDOM::XplExpression *temp2=CodeDOM::XplFunctionBody::new_e();
					temp2->set_texpression(CodeDOM::XplExpression::new_empty());
					yyval.node=temp2;
				}
#line 7554 "layerd_dpp_parser_beta_tab.c"
break;
case 245:
  if (!yytrial)
#line 2158 "layerd_dpp_parser_beta.y"
{/*	PC_SET PC_ERROR PC_HANDLER IDENTIFICADOR*/
					CodeDOM::string s1=yyvsp[-3].str,s2=yyvsp[-2].str;
					if(s1!=L"error" || s2!=L"handler"){
						SINTAX_ERROR("'set error' statement invalid. Use: set error handler LABEL ; ");
					}
					CodeDOM::XplSetonerror* se=CodeDOM::XplFunctionBody::new_setonerror();
					se->set_label(yyvsp[-1].str);
					yyval.node=se;
					SET_SOURCE_DATA(se,-4,0);
				}
#line 7569 "layerd_dpp_parser_beta_tab.c"
break;
case 246:
  if (!yytrial)
#line 2169 "layerd_dpp_parser_beta.y"
{/*	PC_SET	error PUNTO_COMA*/
					SINTAX_ERROR("'set error' statement invalid. Use: set error handler LABEL ; ");
					CodeDOM::XplSetonerror* se=CodeDOM::XplFunctionBody::new_setonerror();
                    /*YYVALID;*/
                    yyps->errflag=1;
					yyval.node=se;
				}
#line 7581 "layerd_dpp_parser_beta_tab.c"
break;
case 247:
  if (!yytrial)
#line 2180 "layerd_dpp_parser_beta.y"
{/*	PC_RESUME PUNTO_COMA*/
					CodeDOM::XplJump* j=CodeDOM::XplFunctionBody::new_jump();
					j->set_type(CodeDOM::ZOEJUMPTYPE_ENUM_RESUME);
					yyval.node=j;
					SET_SOURCE_DATA(j,-1,0);
				}
#line 7592 "layerd_dpp_parser_beta_tab.c"
break;
case 248:
  if (!yytrial)
#line 2187 "layerd_dpp_parser_beta.y"
{/*	PC_RESUME PC_NEXT PUNTO_COMA*/
					CodeDOM::string s1=yyvsp[-1].str;
					if(s1!=L"next"){
						SINTAX_ERROR("'resume' statement invalid. Use 'resume' o 'resume next'.");
					}
					CodeDOM::XplJump* j=CodeDOM::XplFunctionBody::new_jump();
					j->set_type(CodeDOM::ZOEJUMPTYPE_ENUM_RESUMENEXT);
					yyval.node=j;
					SET_SOURCE_DATA(j,-2,0);
				}
#line 7607 "layerd_dpp_parser_beta_tab.c"
break;
case 249:
  if (!yytrial)
#line 2200 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 7613 "layerd_dpp_parser_beta_tab.c"
break;
case 250:
  if (!yytrial)
#line 2201 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 7619 "layerd_dpp_parser_beta_tab.c"
break;
case 251:
  if (!yytrial)
#line 2202 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 7625 "layerd_dpp_parser_beta_tab.c"
break;
case 252:
  if (!yytrial)
#line 2203 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 7631 "layerd_dpp_parser_beta_tab.c"
break;
case 253:
  if (!yytrial)
#line 2208 "layerd_dpp_parser_beta.y"
{/*	Expression PUNTO_COMA*/
					CodeDOM::XplExpression *temp2=new CodeDOM::XplExpression(yyvsp[-1].node);
					temp2->set_ElementName(L"e");
					yyval.node=temp2;
					SET_SOURCE_DATA_S(temp2,0);
				}
#line 7642 "layerd_dpp_parser_beta_tab.c"
break;
case 254:
  if (!yytrial)
#line 2218 "layerd_dpp_parser_beta.y"
{/*	PC_IF OPEN_PARENTESIS Expression CLOSE_PARENTESIS Statement*/
					CodeDOM::XplIfStatement* pif=CodeDOM::XplFunctionBody::new_if();
					pif->set_boolean(new CodeDOM::XplExpression(yyvsp[-2].node));
					CodeDOM::XplFunctionBody*ifbk=NULL;
					SET_SOURCE_DATA_S(pif,-4);
					if(yyvsp[0].node->get_TypeName()==CodeDOM::CODEDOMTYPES_ZOEFUNCTIONBODY){

						ifbk=(CodeDOM::XplFunctionBody*)yyvsp[0].node;
						/*ifbk->set_ElementName(L"ifbk");*/
					}
					else{
						ifbk=CodeDOM::XplIfStatement::new_ifbk();
						ifbk->Childs()->InsertAtEnd(yyvsp[0].node);
					}
					pif->set_ifbk(ifbk);

					yyval.node=pif;
				}
#line 7665 "layerd_dpp_parser_beta_tab.c"
break;
case 255:
  if (!yytrial)
#line 2237 "layerd_dpp_parser_beta.y"
{/*	PC_IF OPEN_PARENTESIS Expression CLOSE_PARENTESIS Statement_NoShort_If PC_ELSE Statement*/
					CodeDOM::XplIfStatement* pif=CodeDOM::XplFunctionBody::new_if();
					pif->set_boolean(new CodeDOM::XplExpression(yyvsp[-4].node));
					CodeDOM::XplFunctionBody*ifbk=NULL;
					CodeDOM::XplNode*node=yyvsp[-2].node;
					SET_SOURCE_DATA_S(pif,-6);
					if(yyvsp[-2].node!=NULL){
						if(yyvsp[-2].node->get_TypeName()==CodeDOM::CODEDOMTYPES_ZOEFUNCTIONBODY){
							ifbk=(CodeDOM::XplFunctionBody*)yyvsp[-2].node;
							/*ifbk->set_ElementName(L"ifbk");*/
						}
						else{
							ifbk=CodeDOM::XplIfStatement::new_ifbk();
							ifbk->Childs()->InsertAtEnd(yyvsp[-2].node);
						}
					}
					else
						WARNING_MESSAGE("Error; invalid if statement.");
					pif->set_ifbk(ifbk);

					if(yyvsp[0].node!=NULL){
						if(yyvsp[0].node->get_TypeName()==CodeDOM::CODEDOMTYPES_ZOEFUNCTIONBODY){
							ifbk=(CodeDOM::XplFunctionBody*)yyvsp[0].node;
							/*ifbk->set_ElementName(L"else");*/
						}
						else{
							ifbk=CodeDOM::XplIfStatement::new_else();
							ifbk->Childs()->InsertAtEnd(yyvsp[0].node);
						}
					}
					else
						WARNING_MESSAGE("Error; invalid else statement.");
					SET_SOURCE_DATA_S(ifbk,-1);
					pif->set_else(ifbk);
					yyval.node=pif;
				}
#line 7706 "layerd_dpp_parser_beta_tab.c"
break;
case 256:
  if (!yytrial)
#line 2277 "layerd_dpp_parser_beta.y"
{/*	PC_WHILE OPEN_PARENTESIS Expression CLOSE_PARENTESIS Statement*/
					CodeDOM::XplDowhileStatement* dw=CodeDOM::XplFunctionBody::new_while();
					dw->set_boolean(new CodeDOM::XplExpression(yyvsp[-2].node));
					CodeDOM::XplFunctionBody*dbk=NULL;
					SET_SOURCE_DATA_S(dw,-4);

					if(yyvsp[0].node->get_TypeName()==CodeDOM::CODEDOMTYPES_ZOEFUNCTIONBODY){
						dbk=(CodeDOM::XplFunctionBody*)yyvsp[0].node;
					}
					else{
						dbk=CodeDOM::XplDowhileStatement::new_dobk();
						dbk->Childs()->InsertAtEnd(yyvsp[0].node);
					}
					dw->set_dobk(dbk);

					yyval.node=dw;
				}
#line 7728 "layerd_dpp_parser_beta_tab.c"
break;
case 257:
  if (!yytrial)
#line 2299 "layerd_dpp_parser_beta.y"
{/*	PC_DO Statement PC_WHILE OPEN_PARENTESIS Expression CLOSE_PARENTESIS PUNTO_COMA*/
					CodeDOM::XplDowhileStatement* dw=CodeDOM::XplFunctionBody::new_do();
					dw->set_boolean(new CodeDOM::XplExpression(yyvsp[-2].node));
					CodeDOM::XplFunctionBody*dbk=NULL;
					SET_SOURCE_DATA_S(dw,-6);

					if(yyvsp[-5].node->get_TypeName()==CodeDOM::CODEDOMTYPES_ZOEFUNCTIONBODY){
						dbk=(CodeDOM::XplFunctionBody*)yyvsp[-5].node;
					}
					else{
						dbk=CodeDOM::XplDowhileStatement::new_dobk();
						dbk->Childs()->InsertAtEnd(yyvsp[-5].node);
					}
					dw->set_dobk(dbk);

					yyval.node=dw;
				}
#line 7750 "layerd_dpp_parser_beta_tab.c"
break;
case 258:
  if (!yytrial)
#line 2320 "layerd_dpp_parser_beta.y"
{/*	PC_FOR OPEN_PARENTESIS For_Init PUNTO_COMA Expression PUNTO_COMA For_Update CLOSE_PARENTESIS Statement*/
					CodeDOM::XplForStatement*
					fs=CreateFor(yyvsp[-6].node/*Init*/,yyvsp[-4].node/*Cond*/,yyvsp[-2].node/*Upd*/,yyvsp[0].node/*Stat*/);
					yyval.node=fs;
					SET_SOURCE_DATA(fs,-8,-1);
				}
#line 7761 "layerd_dpp_parser_beta_tab.c"
break;
case 259:
  if (!yytrial)
#line 2327 "layerd_dpp_parser_beta.y"
{/*	PC_FOR OPEN_PARENTESIS For_Init PC_IN Expression CLOSE_PARENTESIS Statement*/

					CodeDOM::XplNode* foreachexp = CodeDOM::XplExpression::new_n();
					foreachexp->set_Value(L"_FOR_EACH_");
					CodeDOM::XplExpressionlist* fexp = CodeDOM::XplForStatement::new_repeat();
					CodeDOM::XplExpression* uexp = CodeDOM::XplExpressionlist::new_e();
					uexp->set_texpression(foreachexp);
					fexp->Childs()->InsertAtEnd(uexp);

					CodeDOM::XplForStatement*
					fs=CreateFor(yyvsp[-4].node/*Init*/,yyvsp[-2].node/*Cond*/, fexp/*Upd*/,yyvsp[0].node/*Stat*/);
					yyval.node=fs;
					SET_SOURCE_DATA(fs,-6,-1);
				}
#line 7780 "layerd_dpp_parser_beta_tab.c"
break;
case 260:
  if (!yytrial)
#line 2342 "layerd_dpp_parser_beta.y"
{/*	PC_FOR OPEN_PARENTESIS PUNTO_COMA Expression PUNTO_COMA For_Update CLOSE_PARENTESIS Statement*/
					CodeDOM::XplForStatement*
					fs=CreateFor(NULL/*Init*/,yyvsp[-4].node/*Cond*/,yyvsp[-2].node/*Upd*/,yyvsp[0].node/*Stat*/);
					yyval.node=fs;
					SET_SOURCE_DATA(fs,-7,-1);
				}
#line 7791 "layerd_dpp_parser_beta_tab.c"
break;
case 261:
  if (!yytrial)
#line 2349 "layerd_dpp_parser_beta.y"
{/*	PC_FOR OPEN_PARENTESIS For_Init PUNTO_COMA PUNTO_COMA For_Update CLOSE_PARENTESIS Statement*/
					CodeDOM::XplForStatement*
					fs=CreateFor(yyvsp[-5].node/*Init*/,NULL/*Cond*/,yyvsp[-2].node/*Upd*/,yyvsp[0].node/*Stat*/);
					yyval.node=fs;
					SET_SOURCE_DATA(fs,-7,-1);
				}
#line 7802 "layerd_dpp_parser_beta_tab.c"
break;
case 262:
  if (!yytrial)
#line 2356 "layerd_dpp_parser_beta.y"
{/*	PC_FOR OPEN_PARENTESIS For_Init PUNTO_COMA Expression PUNTO_COMA CLOSE_PARENTESIS Statement*/
					CodeDOM::XplForStatement*
					fs=CreateFor(yyvsp[-5].node/*Init*/,yyvsp[-3].node/*Cond*/,NULL/*Upd*/,yyvsp[0].node/*Stat*/);
					yyval.node=fs;
					SET_SOURCE_DATA(fs,-7,-1);
				}
#line 7813 "layerd_dpp_parser_beta_tab.c"
break;
case 263:
  if (!yytrial)
#line 2363 "layerd_dpp_parser_beta.y"
{/*	PC_FOR OPEN_PARENTESIS PUNTO_COMA Expression PUNTO_COMA CLOSE_PARENTESIS Statement*/
					CodeDOM::XplForStatement*
					fs=CreateFor(NULL/*Init*/,yyvsp[-3].node/*Cond*/,NULL/*Upd*/,yyvsp[0].node/*Stat*/);
					yyval.node=fs;
					SET_SOURCE_DATA(fs,-6,-1);
				}
#line 7824 "layerd_dpp_parser_beta_tab.c"
break;
case 264:
  if (!yytrial)
#line 2370 "layerd_dpp_parser_beta.y"
{/*	PC_FOR OPEN_PARENTESIS For_Init PUNTO_COMA PUNTO_COMA CLOSE_PARENTESIS Statement*/
					CodeDOM::XplForStatement*
					fs=CreateFor(yyvsp[-4].node/*Init*/,NULL/*Cond*/,NULL/*Upd*/,yyvsp[0].node/*Stat*/);
					yyval.node=fs;
					SET_SOURCE_DATA(fs,-6,-1);
				}
#line 7835 "layerd_dpp_parser_beta_tab.c"
break;
case 265:
  if (!yytrial)
#line 2377 "layerd_dpp_parser_beta.y"
{/*	PC_FOR OPEN_PARENTESIS PUNTO_COMA PUNTO_COMA For_Update CLOSE_PARENTESIS Statement*/
					CodeDOM::XplForStatement*
					fs=CreateFor(NULL/*Init*/,NULL/*Cond*/,yyvsp[-2].node/*Upd*/,yyvsp[0].node/*Stat*/);
					yyval.node=fs;
					SET_SOURCE_DATA(fs,-6,-1);
				}
#line 7846 "layerd_dpp_parser_beta_tab.c"
break;
case 266:
  if (!yytrial)
#line 2384 "layerd_dpp_parser_beta.y"
{/*	PC_FOR OPEN_PARENTESIS PUNTO_COMA PUNTO_COMA CLOSE_PARENTESIS Statement*/
					CodeDOM::XplForStatement*
					fs=CreateFor(NULL/*Init*/,NULL/*Cond*/,NULL/*Upd*/,yyvsp[0].node/*Stat*/);
					yyval.node=fs;
					SET_SOURCE_DATA(fs,-5,-1);
				}
#line 7857 "layerd_dpp_parser_beta_tab.c"
break;
case 267:
  if (!yytrial)
#line 2394 "layerd_dpp_parser_beta.y"
{/*	Expression_List*/
					CodeDOM::XplForinit*f=CodeDOM::XplForStatement::new_init();
					yyvsp[0].node->set_ElementName(L"el");
					f->set_tforinit(yyvsp[0].node);
					yyval.node=f;
				}
#line 7868 "layerd_dpp_parser_beta_tab.c"
break;
case 268:
  if (!yytrial)
#line 2401 "layerd_dpp_parser_beta.y"
{/*	Expression_List*/
					CodeDOM::XplForinit*f=CodeDOM::XplForStatement::new_init();
					yyvsp[0].node->set_ElementName(L"dl");
					f->set_tforinit(yyvsp[0].node);
					yyval.node=f;
				}
#line 7879 "layerd_dpp_parser_beta_tab.c"
break;
case 269:
  if (!yytrial)
#line 2411 "layerd_dpp_parser_beta.y"
{/*	Expression_List*/
					yyval.node=yyvsp[0].node;
				}
#line 7887 "layerd_dpp_parser_beta_tab.c"
break;
case 270:
  if (!yytrial)
#line 2418 "layerd_dpp_parser_beta.y"
{/*	PUNTO_COMA*/
					CodeDOM::XplExpression* e=CodeDOM::XplFunctionBody::new_e();
					e->set_texpression(CodeDOM::XplExpression::new_empty());
					yyval.node=e;
					SET_SOURCE_DATA_S(e,0);
				}
#line 7898 "layerd_dpp_parser_beta_tab.c"
break;
case 271:
  if (!yytrial)
#line 2428 "layerd_dpp_parser_beta.y"
{/*	IDENTIFICADOR OP_DOSPUNTOS Statement*/
					tempNode=CodeDOM::XplFunctionBody::new_label();
					tempNode->set_Value(yyvsp[-2].str);
					yyval.node=tempNode;
					yyval.nodos[1]=yyvsp[0].node;
				}
#line 7909 "layerd_dpp_parser_beta_tab.c"
break;
case 272:
  if (!yytrial)
#line 2439 "layerd_dpp_parser_beta.y"
{/*	PC_SWITCH OPEN_PARENTESIS Expression CLOSE_PARENTESIS Switch_Block*/
					CodeDOM::XplExpression*e=CodeDOM::XplSwitchStatement::new_e();
					e->set_texpression((CodeDOM::XplExpression*)yyvsp[-2].node);
					CodeDOM::XplSwitchStatement*s=new CodeDOM::XplSwitchStatement(e,(CodeDOM::XplNodeList*)yyvsp[0].node);
					s->set_ElementName(L"switch");
					yyval.node=s;
					SET_SOURCE_DATA_S(s,-4);
				}
#line 7922 "layerd_dpp_parser_beta_tab.c"
break;
case 273:
  if (!yytrial)
#line 2448 "layerd_dpp_parser_beta.y"
{/*	PC_SWITCH error*/
					SINTAX_ERROR("'switch' statement invalid. Use: switch( expression ) { options } ");
					CodeDOM::XplSwitchStatement*s=new CodeDOM::XplSwitchStatement();
					yyval.node=s;
				}
#line 7932 "layerd_dpp_parser_beta_tab.c"
break;
case 274:
  if (!yytrial)
#line 2457 "layerd_dpp_parser_beta.y"
{/*	OPEN_LLAVE Switch_Block_Statement_Groups Switch_Labels CLOSE_LLAVE*/
					yyval.node=yyvsp[-2].node;
				}
#line 7940 "layerd_dpp_parser_beta_tab.c"
break;
case 275:
  if (!yytrial)
#line 2461 "layerd_dpp_parser_beta.y"
{/*	OPEN_LLAVE Switch_Block_Statement_Groups CLOSE_LLAVE*/
					yyval.node=yyvsp[-1].node;
				}
#line 7948 "layerd_dpp_parser_beta_tab.c"
break;
case 276:
  if (!yytrial)
#line 2465 "layerd_dpp_parser_beta.y"
{/*	OPEN_LLAVE Switch_Labels CLOSE_LLAVE*/
					yyval.node=yyvsp[-1].node;
					WARNING_MESSAGE("'switch' statement without effect.");
				}
#line 7957 "layerd_dpp_parser_beta_tab.c"
break;
case 277:
  if (!yytrial)
#line 2470 "layerd_dpp_parser_beta.y"
{/*	OPEN_LLAVE CLOSE_LLAVE*/
					yyval.node=NULL;
					WARNING_MESSAGE("'switch' statement empty.");
				}
#line 7966 "layerd_dpp_parser_beta_tab.c"
break;
case 278:
  if (!yytrial)
#line 2478 "layerd_dpp_parser_beta.y"
{/*	Switch_Block_Statement_Group*/
					yyval.list=yyvsp[0].list;
				}
#line 7974 "layerd_dpp_parser_beta_tab.c"
break;
case 279:
  if (!yytrial)
#line 2482 "layerd_dpp_parser_beta.y"
{/*	Switch_Block_Statement_Groups Switch_Block_Statement_Group*/
					CodeDOM::XplNodeList*list=yyvsp[-1].list;
					CodeDOM::XplNodeList*list2=yyvsp[0].list;
					if(list!=NULL && list2!=NULL){
						for(CodeDOM::XplNode* node = list2->FirstNode(); node != list2->GetLastNode() ; node = list2->NextNode()){
							list->InsertAtEnd(node);
						}
						list2->Clear();
						delete list2;
					}
					else{
						WARNING_MESSAGE("Internal error on switch statement");
						list = new CodeDOM::XplNodeList();
					}
					yyval.list=list;
				}
#line 7995 "layerd_dpp_parser_beta_tab.c"
break;
case 280:
  if (!yytrial)
#line 2502 "layerd_dpp_parser_beta.y"
{/*	Switch_Labels Block_Statements*/
					CodeDOM::XplNodeList*list=yyvsp[-1].list;
					CodeDOM::XplCase*c=NULL;
					if(list!=NULL)
						c=(CodeDOM::XplCase*)list->LastNode();
					else
						c=new CodeDOM::XplCase();
					c->set_bk((CodeDOM::XplFunctionBody*)yyvsp[0].node);
					yyval.list=yyvsp[-1].list;
				}
#line 8010 "layerd_dpp_parser_beta_tab.c"
break;
case 281:
  if (!yytrial)
#line 2516 "layerd_dpp_parser_beta.y"
{/*	Switch_Label*/
					CodeDOM::XplNodeList*l=NULL;
					l=new CodeDOM::XplNodeList();
					l->InsertAtEnd(yyvsp[0].node);
					yyval.list=l;
				}
#line 8021 "layerd_dpp_parser_beta_tab.c"
break;
case 282:
  if (!yytrial)
#line 2523 "layerd_dpp_parser_beta.y"
{/*	Switch_Labels Switch_Label*/
					CodeDOM::XplNodeList*l=yyvsp[-1].list;
					/*if(l==NULL)l=NEW_ERROR_RESUME_ZOENODELIST;*/
					if(l==NULL)l=new CodeDOM::XplNodeList();
					l->InsertAtEnd(yyvsp[0].node);
					yyval.list=l;
				}
#line 8033 "layerd_dpp_parser_beta_tab.c"
break;
case 283:
  if (!yytrial)
#line 2534 "layerd_dpp_parser_beta.y"
{/*	PC_CASE Expression OP_DOSPUNTOS*/
					CodeDOM::XplCase*c=CodeDOM::XplSwitchStatement::new_case();
					CodeDOM::XplExpression*e=CodeDOM::XplCase::new_e();
					e->set_texpression((CodeDOM::XplExpression*)yyvsp[-1].node);
					c->set_e(e);
					yyval.node=c;
					SET_SOURCE_DATA_S(c,-2);
				}
#line 8046 "layerd_dpp_parser_beta_tab.c"
break;
case 284:
  if (!yytrial)
#line 2543 "layerd_dpp_parser_beta.y"
{/*	PC_DEFAULT OP_DOSPUNTOS*/
					CodeDOM::XplCase*c=CodeDOM::XplSwitchStatement::new_case();
					c->set_e((CodeDOM::XplExpression*)CodeDOM::XplFunctionBody::new_e());
					c->get_e()->set_texpression(CodeDOM::XplExpression::new_empty());
					yyval.node=c;
					SET_SOURCE_DATA_S(c,-1);
				}
#line 8058 "layerd_dpp_parser_beta_tab.c"
break;
case 285:
  if (!yytrial)
#line 2554 "layerd_dpp_parser_beta.y"
{/*	PC_BREAK Label PUNTO_COMA*/
					CodeDOM::XplJump* j=CodeDOM::XplFunctionBody::new_jump();
					j->set_type(CodeDOM::ZOEJUMPTYPE_ENUM_BREAK);
					j->set_label(yyvsp[-1].str);
					yyval.node=j;
					SET_SOURCE_DATA_S(j,-2);
				}
#line 8070 "layerd_dpp_parser_beta_tab.c"
break;
case 286:
  if (!yytrial)
#line 2562 "layerd_dpp_parser_beta.y"
{/*	PC_BREAK PUNTO_COMA*/
					CodeDOM::XplJump* j=CodeDOM::XplFunctionBody::new_jump();
					j->set_type(CodeDOM::ZOEJUMPTYPE_ENUM_BREAK);
					yyval.node=j;
					SET_SOURCE_DATA_S(j,-1);
				}
#line 8081 "layerd_dpp_parser_beta_tab.c"
break;
case 287:
  if (!yytrial)
#line 2572 "layerd_dpp_parser_beta.y"
{/*	PC_CONTINUE Label PUNTO_COMA*/
					CodeDOM::XplJump* j=CodeDOM::XplFunctionBody::new_jump();
					j->set_type(CodeDOM::ZOEJUMPTYPE_ENUM_CONTINUE);
					j->set_label(yyvsp[-1].str);
					yyval.node=j;
					SET_SOURCE_DATA_S(j,-2);
				}
#line 8093 "layerd_dpp_parser_beta_tab.c"
break;
case 288:
  if (!yytrial)
#line 2580 "layerd_dpp_parser_beta.y"
{/*	PC_CONTINUE PUNTO_COMA*/
					CodeDOM::XplJump* j=CodeDOM::XplFunctionBody::new_jump();
					j->set_type(CodeDOM::ZOEJUMPTYPE_ENUM_CONTINUE);
					yyval.node=j;
					SET_SOURCE_DATA_S(j,-1);
				}
#line 8104 "layerd_dpp_parser_beta_tab.c"
break;
case 289:
  if (!yytrial)
#line 2590 "layerd_dpp_parser_beta.y"
{/*	PC_RETURN Expression PUNTO_COMA*/
					CodeDOM::XplExpression* re=CodeDOM::XplFunctionBody::new_return();
					re->set_texpression(yyvsp[-1].node);
					yyval.node=re;
					SET_SOURCE_DATA(re,-2,0);
				}
#line 8115 "layerd_dpp_parser_beta_tab.c"
break;
case 290:
  if (!yytrial)
#line 2597 "layerd_dpp_parser_beta.y"
{/*	PC_RETURN PUNTO_COMA*/
					CodeDOM::XplExpression* re=CodeDOM::XplFunctionBody::new_return();
					yyval.node=re;
					SET_SOURCE_DATA_S(re,-1);
				}
#line 8125 "layerd_dpp_parser_beta_tab.c"
break;
case 291:
  if (!yytrial)
#line 2606 "layerd_dpp_parser_beta.y"
{/*	PC_THROW PUNTO_COMA*/
					CodeDOM::XplExpression *t=CodeDOM::XplFunctionBody::new_throw();
					t->set_texpression(CodeDOM::XplExpression::new_empty());
					yyval.node=t;
					SET_SOURCE_DATA(t,-1,0);
				}
#line 8136 "layerd_dpp_parser_beta_tab.c"
break;
case 292:
  if (!yytrial)
#line 2613 "layerd_dpp_parser_beta.y"
{/*	PC_THROW Expression PUNTO_COMA*/
					CodeDOM::XplExpression *t=CodeDOM::XplFunctionBody::new_throw();
					t->set_texpression((CodeDOM::XplExpression*)yyvsp[-1].node);
					yyval.node=t;
					SET_SOURCE_DATA(t,-2,0);
				}
#line 8147 "layerd_dpp_parser_beta_tab.c"
break;
case 293:
  if (!yytrial)
#line 2620 "layerd_dpp_parser_beta.y"
{/*	PC_THROW error*/
					SINTAX_ERROR("'throw' statement invalid. After 'throw' an expression is required.");
					CodeDOM::XplExpression *t=CodeDOM::XplFunctionBody::new_throw();
					t->set_texpression(CodeDOM::XplExpression::new_empty());
					yyval.node=t;
				}
#line 8158 "layerd_dpp_parser_beta_tab.c"
break;
case 294:
  if (!yytrial)
#line 2630 "layerd_dpp_parser_beta.y"
{/*	PC_TRY Block Catches*/
					CodeDOM::XplTryStatement*tr=(CodeDOM::XplTryStatement*)yyvsp[0].node;
					tr->set_trybk((CodeDOM::XplFunctionBody*)yyvsp[-1].node);
					yyval.node=tr;
					SET_SOURCE_DATA_S(tr,-2);
				}
#line 8169 "layerd_dpp_parser_beta_tab.c"
break;
case 295:
  if (!yytrial)
#line 2637 "layerd_dpp_parser_beta.y"
{/*	PC_TRY Block Catches Finally*/
					CodeDOM::XplTryStatement*tr=(CodeDOM::XplTryStatement*)yyvsp[-1].node;
					tr->set_trybk((CodeDOM::XplFunctionBody*)yyvsp[-2].node);
					tr->set_finallybk((CodeDOM::XplFunctionBody*)yyvsp[0].node);
					yyval.node=tr;
					SET_SOURCE_DATA_S(tr,-3);
				}
#line 8181 "layerd_dpp_parser_beta_tab.c"
break;
case 296:
  if (!yytrial)
#line 2645 "layerd_dpp_parser_beta.y"
{/*	PC_TRY Block Finally*/
					CodeDOM::XplTryStatement*tr=CodeDOM::XplFunctionBody::new_try();
					tr->set_trybk((CodeDOM::XplFunctionBody*)yyvsp[-1].node);
					tr->set_finallybk((CodeDOM::XplFunctionBody*)yyvsp[0].node);
					yyval.node=tr;
					SET_SOURCE_DATA_S(tr,-2);
				}
#line 8193 "layerd_dpp_parser_beta_tab.c"
break;
case 297:
  if (!yytrial)
#line 2653 "layerd_dpp_parser_beta.y"
{/*	PC_TRY	error*/
					SINTAX_ERROR("'try' statement invalid.");
					CodeDOM::XplTryStatement*tr=CodeDOM::XplFunctionBody::new_try();
					yyval.node=tr;
				}
#line 8203 "layerd_dpp_parser_beta_tab.c"
break;
case 298:
  if (!yytrial)
#line 2662 "layerd_dpp_parser_beta.y"
{/*	Catch_Clause*/
					CodeDOM::XplTryStatement*tr=CodeDOM::XplFunctionBody::new_try();
					tr->get_catchbk()->InsertAtEnd(yyvsp[0].node);
					yyval.node=tr;
				}
#line 8213 "layerd_dpp_parser_beta_tab.c"
break;
case 299:
  if (!yytrial)
#line 2668 "layerd_dpp_parser_beta.y"
{/*	Catches Catch_Clause*/
					CodeDOM::XplTryStatement*tr=(CodeDOM::XplTryStatement*)yyvsp[-1].node;
					tr->get_catchbk()->InsertAtEnd(yyvsp[0].node);
					yyval.node=tr;
				}
#line 8223 "layerd_dpp_parser_beta_tab.c"
break;
case 300:
  if (!yytrial)
#line 2677 "layerd_dpp_parser_beta.y"
{/*	PC_CATCH OPEN_PARENTESIS For_Init CLOSE_PARENTESIS Block*/
					CodeDOM::XplCatchinit*ci=CodeDOM::XplCatchStatement::new_init();
					SET_SOURCE_DATA_S(ci,-4);

					CodeDOM::XplForinit*f=(CodeDOM::XplForinit*)yyvsp[-2].node;
					/*Primero veo que clase de nodo devuelve For_Init*/
					if(f->get_tforinit()->get_TypeName()==CodeDOM::CODEDOMTYPES_ZOEEXPRESSIONLIST){
						ci->set_tcatchinit(((CodeDOM::XplExpressionlist*)f->get_tforinit())->Childs()->FirstNode());
						if(((CodeDOM::XplExpressionlist*)f->get_tforinit())->Childs()->getLenght()>1){
							SINTAX_ERROR("Can't use more than one expression inside a catch block initializer.");
						}
					}
					else if(f->get_tforinit()->get_TypeName()==CodeDOM::CODEDOMTYPES_ZOEDECLARATORLIST){
						ci->set_tcatchinit(((CodeDOM::XplDeclaratorlist*)f->get_tforinit())->Childs()->FirstNode());
						if(((CodeDOM::XplDeclaratorlist*)f->get_tforinit())->Childs()->getLenght()>1){
							SINTAX_ERROR("Can't use more than one declaration inside a catch block initializer.");
						}
					}
					else{
						SINTAX_ERROR("Internal Meta D++ compiler error.");
					}

					CodeDOM::XplCatchStatement*c=CodeDOM::XplTryStatement::new_catchbk();
					c->set_init(ci);
					c->set_bk((CodeDOM::XplFunctionBody*)yyvsp[0].node);
					yyval.node=c;
				}
#line 8255 "layerd_dpp_parser_beta_tab.c"
break;
case 301:
  if (!yytrial)
#line 2705 "layerd_dpp_parser_beta.y"
{/*	PC_CATCH error*/
					SINTAX_ERROR("'catch' statement invalid.");
					CodeDOM::XplCatchStatement*c=CodeDOM::XplTryStatement::new_catchbk();
					yyval.node=c;
				}
#line 8265 "layerd_dpp_parser_beta_tab.c"
break;
case 302:
  if (!yytrial)
#line 2715 "layerd_dpp_parser_beta.y"
{/*	PC_FINALLY Block*/
					yyval.node=yyvsp[0].node;
				}
#line 8273 "layerd_dpp_parser_beta_tab.c"
break;
case 303:
  if (!yytrial)
#line 2724 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 8279 "layerd_dpp_parser_beta_tab.c"
break;
case 304:
  if (!yytrial)
#line 2729 "layerd_dpp_parser_beta.y"
{/*	Expression*/
					CodeDOM::XplExpressionlist *el=new CodeDOM::XplExpressionlist();
					CodeDOM::XplExpression *e=el->new_e();
					e->set_texpression(yyvsp[0].node);
					el->set_ElementName(L"params");
					el->Childs()->InsertAtEnd(e);
					yyval.node=el;
				}
#line 8292 "layerd_dpp_parser_beta_tab.c"
break;
case 305:
  if (!yytrial)
#line 2738 "layerd_dpp_parser_beta.y"
{/*	Expression_List COMA Expression*/
					CodeDOM::XplExpressionlist *el=(CodeDOM::XplExpressionlist*)yyvsp[-2].node;
					if(el==NULL){
						SINTAX_ERROR("invalid expression list.");
						el = new CodeDOM::XplExpressionlist();
					}
					CodeDOM::XplExpression *e=el->new_e();
					e->set_texpression(yyvsp[0].node);
					el->Childs()->InsertAtEnd(e);
					yyval.node=el;
				}
#line 8308 "layerd_dpp_parser_beta_tab.c"
break;
case 306:
  if (!yytrial)
#line 2750 "layerd_dpp_parser_beta.y"
{
					SINTAX_ERROR("invalid expression list.");
					yyval.node=new CodeDOM::XplExpressionlist();
				}
#line 8317 "layerd_dpp_parser_beta_tab.c"
break;
case 307:
  if (!yytrial)
#line 2755 "layerd_dpp_parser_beta.y"
{
					SINTAX_ERROR("invalid expression list after comma.");
					yyval.node=new CodeDOM::XplExpressionlist();
				}
#line 8326 "layerd_dpp_parser_beta_tab.c"
break;
case 308:
  if (!yytrial)
#line 2764 "layerd_dpp_parser_beta.y"
{/*	OPEN_PARENTESIS Expression CLOSE_PARENTESIS*/
					yyval=yyvsp[-1];
				}
#line 8334 "layerd_dpp_parser_beta_tab.c"
break;
case 309:
  if (!yytrial)
#line 2771 "layerd_dpp_parser_beta.y"
{/*	Expression_Or_Punctuactor*/
					CodeDOM::XplCexpression *ce=CodeDOM::XplComplexfunctioncall::new_ce();
					ce->Childs()->InsertAtEnd(yyvsp[0].node);
					yyval.node=ce;
				}
#line 8344 "layerd_dpp_parser_beta_tab.c"
break;
case 310:
  if (!yytrial)
#line 2777 "layerd_dpp_parser_beta.y"
{/*	Complex_Expression_List  Expression_Or_Punctuactor*/
					CodeDOM::XplCexpression *ce=(CodeDOM::XplCexpression*)yyvsp[-1].node;
					ce->Childs()->InsertAtEnd(yyvsp[0].node);
					yyval.node=ce;
				}
#line 8354 "layerd_dpp_parser_beta_tab.c"
break;
case 311:
  if (!yytrial)
#line 2786 "layerd_dpp_parser_beta.y"
{/*	Expression_List*/
					yyvsp[0].node->set_ElementName(DT("l"));
					yyval.node=yyvsp[0].node;
				}
#line 8363 "layerd_dpp_parser_beta_tab.c"
break;
case 312:
  if (!yytrial)
#line 2791 "layerd_dpp_parser_beta.y"
{/*	PUNTO_COMA*/
					yyval.node=CodeDOM::XplCexpression::new_ls();
				}
#line 8371 "layerd_dpp_parser_beta_tab.c"
break;
case 313:
  if (!yytrial)
#line 2795 "layerd_dpp_parser_beta.y"
{/*	OP_DOSPUNTOS*/
					yyval.node=CodeDOM::XplCexpression::new_lp();
				}
#line 8379 "layerd_dpp_parser_beta_tab.c"
break;
case 314:
  if (!yytrial)
#line 2801 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 8385 "layerd_dpp_parser_beta_tab.c"
break;
case 315:
  if (!yytrial)
#line 2805 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 8391 "layerd_dpp_parser_beta_tab.c"
break;
case 316:
  if (!yytrial)
#line 2807 "layerd_dpp_parser_beta.y"
{/*	Assingment_Exp OP_IGUALMAYOR Argument_Exp*/
					CodeDOM::XplExpression *temp=new CodeDOM::XplExpression(yyvsp[-2].node);
					temp->set_ElementName(DT("l"));
					CodeDOM::XplExpression *temp2=new CodeDOM::XplExpression(yyvsp[0].node);
					temp2->set_ElementName(DT("r"));
					tempNode=new CodeDOM::XplBinaryoperator(CodeDOM::ZOEBINARYOPERATORS_ENUM_IMP, false,temp,temp2);
					tempNode->set_ElementName(DT("bo"));
					yyval.node=tempNode;
				}
#line 8405 "layerd_dpp_parser_beta_tab.c"
break;
case 317:
  if (!yytrial)
#line 2819 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 8411 "layerd_dpp_parser_beta_tab.c"
break;
case 318:
  if (!yytrial)
#line 2821 "layerd_dpp_parser_beta.y"
{/*	Unary_Exp Assing_Operator Assingment_Exp*/
					CodeDOM::XplExpression *temp=new CodeDOM::XplExpression(yyvsp[-2].node);temp->set_ElementName(DT("l"));
					CodeDOM::XplExpression *temp2=new CodeDOM::XplExpression(yyvsp[0].node);temp2->set_ElementName(DT("r"));
					CodeDOM::XplAssingop_enum oper;
					switch(yyvsp[-1].num){
						case OP_IGUAL:oper=CodeDOM::ZOEASSINGOP_ENUM_NONE;break;
						case OP_MASIGUAL:oper=CodeDOM::ZOEASSINGOP_ENUM_ADD;break;
						case OP_MENOSIGUAL:oper=CodeDOM::ZOEASSINGOP_ENUM_SUB;break;
						case OP_ASTERISCOIGUAL:oper=CodeDOM::ZOEASSINGOP_ENUM_MUL;break;
						case OP_DIVIDIDOIGUAL:oper=CodeDOM::ZOEASSINGOP_ENUM_DIV;break;
						case OP_YIGUAL:oper=CodeDOM::ZOEASSINGOP_ENUM_AND;break;
						case OP_OIGUAL:oper=CodeDOM::ZOEASSINGOP_ENUM_OR;break;
						case OP_SOMBREROIGUAL:oper=CodeDOM::ZOEASSINGOP_ENUM_XOR;break;
						case OP_PORCENTAJEIGUAL:oper=CodeDOM::ZOEASSINGOP_ENUM_MOD;break;
						case OP_SHIFTLEFTIGUAL:oper=CodeDOM::ZOEASSINGOP_ENUM_LSH;break;
						case OP_SHIFTRIGHTIGUAL:oper=CodeDOM::ZOEASSINGOP_ENUM_RSH;break;
						default:oper=CodeDOM::ZOEASSINGOP_ENUM_NONE;break;
					};
					CodeDOM::XplAssing* tempNode=new CodeDOM::XplAssing(oper,false,temp,temp2);
					tempNode->set_ElementName(L"a");
					yyval.node=tempNode;
				}
#line 8438 "layerd_dpp_parser_beta_tab.c"
break;
case 319:
  if (!yytrial)
#line 2846 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 8444 "layerd_dpp_parser_beta_tab.c"
break;
case 320:
  if (!yytrial)
#line 2848 "layerd_dpp_parser_beta.y"
{/*	Logical_OR_Exp OP_PREGUNTA Expression OP_DOSPUNTOS Conditional_Exp*/
					CodeDOM::XplExpression *temp=new CodeDOM::XplExpression(yyvsp[-4].node);temp->set_ElementName(DT("o1"));
					CodeDOM::XplExpression *temp2=new CodeDOM::XplExpression(yyvsp[-2].node);temp2->set_ElementName(DT("o2"));
					CodeDOM::XplExpression *temp3=new CodeDOM::XplExpression(yyvsp[0].node);temp2->set_ElementName(DT("o3"));

					tempNode=new CodeDOM::XplTernaryoperator(CodeDOM::ZOETERNARYOPERATORS_ENUM_BOOLEAN,false,temp,temp2,temp3);
					tempNode->set_ElementName(L"to");
					yyval.node=tempNode;
				}
#line 8458 "layerd_dpp_parser_beta_tab.c"
break;
case 321:
  if (!yytrial)
#line 2860 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 8464 "layerd_dpp_parser_beta_tab.c"
break;
case 322:
  if (!yytrial)
#line 2862 "layerd_dpp_parser_beta.y"
{/*	Logical_OR_Exp OP_OO Logical_AND_Exp*/
					CodeDOM::XplExpression *temp=new CodeDOM::XplExpression(yyvsp[-2].node);temp->set_ElementName(DT("l"));
					CodeDOM::XplExpression *temp2=new CodeDOM::XplExpression(yyvsp[0].node);temp2->set_ElementName(DT("r"));
					tempNode=new CodeDOM::XplBinaryoperator(CodeDOM::ZOEBINARYOPERATORS_ENUM_OR,false,temp,temp2);
					tempNode->set_ElementName(L"bo");
					yyval.node=tempNode;
				}
#line 8476 "layerd_dpp_parser_beta_tab.c"
break;
case 323:
  if (!yytrial)
#line 2872 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 8482 "layerd_dpp_parser_beta_tab.c"
break;
case 324:
  if (!yytrial)
#line 2874 "layerd_dpp_parser_beta.y"
{/*	Logical_AND_Exp OP_YY Inclusive_OR_Exp*/
					CodeDOM::XplExpression *temp=new CodeDOM::XplExpression(yyvsp[-2].node);temp->set_ElementName(DT("l"));
					CodeDOM::XplExpression *temp2=new CodeDOM::XplExpression(yyvsp[0].node);temp2->set_ElementName(DT("r"));
					tempNode=new CodeDOM::XplBinaryoperator(CodeDOM::ZOEBINARYOPERATORS_ENUM_AND,false,temp,temp2);
					tempNode->set_ElementName(L"bo");
					yyval.node=tempNode;
				}
#line 8494 "layerd_dpp_parser_beta_tab.c"
break;
case 325:
  if (!yytrial)
#line 2884 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 8500 "layerd_dpp_parser_beta_tab.c"
break;
case 326:
  if (!yytrial)
#line 2886 "layerd_dpp_parser_beta.y"
{/*	Inclusive_OR_Exp OP_O Exclusive_OR_Exp*/
					CodeDOM::XplExpression *temp=new CodeDOM::XplExpression(yyvsp[-2].node);temp->set_ElementName(DT("l"));
					CodeDOM::XplExpression *temp2=new CodeDOM::XplExpression(yyvsp[0].node);temp2->set_ElementName(DT("r"));
					tempNode=new CodeDOM::XplBinaryoperator(CodeDOM::ZOEBINARYOPERATORS_ENUM_BOR,false,temp,temp2);
					tempNode->set_ElementName(L"bo");
					yyval.node=tempNode;
				}
#line 8512 "layerd_dpp_parser_beta_tab.c"
break;
case 327:
  if (!yytrial)
#line 2896 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 8518 "layerd_dpp_parser_beta_tab.c"
break;
case 328:
  if (!yytrial)
#line 2898 "layerd_dpp_parser_beta.y"
{/*	Exclusive_OR_Exp OP_SOMBRERO And_Expression*/
					CodeDOM::XplExpression *temp=new CodeDOM::XplExpression(yyvsp[-2].node);temp->set_ElementName(DT("l"));
					CodeDOM::XplExpression *temp2=new CodeDOM::XplExpression(yyvsp[0].node);temp2->set_ElementName(DT("r"));
					tempNode=new CodeDOM::XplBinaryoperator(CodeDOM::ZOEBINARYOPERATORS_ENUM_XOR,false,temp,temp2);
					tempNode->set_ElementName(L"bo");
					yyval.node=tempNode;
				}
#line 8530 "layerd_dpp_parser_beta_tab.c"
break;
case 329:
  if (!yytrial)
#line 2908 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 8536 "layerd_dpp_parser_beta_tab.c"
break;
case 330:
  if (!yytrial)
#line 2910 "layerd_dpp_parser_beta.y"
{/*	And_Expression OP_Y Equality_Exp*/
					CodeDOM::XplExpression *temp=new CodeDOM::XplExpression(yyvsp[-2].node);temp->set_ElementName(DT("l"));
					CodeDOM::XplExpression *temp2=new CodeDOM::XplExpression(yyvsp[0].node);temp2->set_ElementName(DT("r"));
					tempNode=new CodeDOM::XplBinaryoperator(CodeDOM::ZOEBINARYOPERATORS_ENUM_BAND,false,temp,temp2);
					tempNode->set_ElementName(L"bo");
					yyval.node=tempNode;
				}
#line 8548 "layerd_dpp_parser_beta_tab.c"
break;
case 331:
  if (!yytrial)
#line 2920 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 8554 "layerd_dpp_parser_beta_tab.c"
break;
case 332:
  if (!yytrial)
#line 2922 "layerd_dpp_parser_beta.y"
{/*	Equality_Exp OP_IGUALIGUAL Relational_Exp*/
					CodeDOM::XplExpression *temp=new CodeDOM::XplExpression(yyvsp[-2].node);temp->set_ElementName(DT("l"));
					CodeDOM::XplExpression *temp2=new CodeDOM::XplExpression(yyvsp[0].node);temp2->set_ElementName(DT("r"));
					tempNode=new CodeDOM::XplBinaryoperator(CodeDOM::ZOEBINARYOPERATORS_ENUM_EQ,false,temp,temp2);
					tempNode->set_ElementName(L"bo");
					yyval.node=tempNode;
				}
#line 8566 "layerd_dpp_parser_beta_tab.c"
break;
case 333:
  if (!yytrial)
#line 2930 "layerd_dpp_parser_beta.y"
{/*	Equality_Exp OP_ADMIRACIONIGUAL Relational_Exp*/
					CodeDOM::XplExpression *temp=new CodeDOM::XplExpression(yyvsp[-2].node);temp->set_ElementName(DT("l"));
					CodeDOM::XplExpression *temp2=new CodeDOM::XplExpression(yyvsp[0].node);temp2->set_ElementName(DT("r"));
					tempNode=new CodeDOM::XplBinaryoperator(CodeDOM::ZOEBINARYOPERATORS_ENUM_NOTEQ,false,temp,temp2);
					tempNode->set_ElementName(L"bo");
					yyval.node=tempNode;
				}
#line 8578 "layerd_dpp_parser_beta_tab.c"
break;
case 334:
  if (!yytrial)
#line 2940 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 8584 "layerd_dpp_parser_beta_tab.c"
break;
case 335:
  if (!yytrial)
#line 2942 "layerd_dpp_parser_beta.y"
{/*	Relational_Exp OP_MENOR Shift_Exp*/
					CodeDOM::XplExpression *temp=new CodeDOM::XplExpression(yyvsp[-2].node);temp->set_ElementName(DT("l"));
					CodeDOM::XplExpression *temp2=new CodeDOM::XplExpression(yyvsp[0].node);temp2->set_ElementName(DT("r"));
					tempNode=new CodeDOM::XplBinaryoperator(CodeDOM::ZOEBINARYOPERATORS_ENUM_LS,false,temp,temp2);
					tempNode->set_ElementName(L"bo");
					yyval.node=tempNode;
				}
#line 8596 "layerd_dpp_parser_beta_tab.c"
break;
case 336:
  if (!yytrial)
#line 2951 "layerd_dpp_parser_beta.y"
{/*	Relational_Exp OP_MAYOR Shift_Exp*/
					CodeDOM::XplExpression *temp=new CodeDOM::XplExpression(yyvsp[-2].node);temp->set_ElementName(DT("l"));
					CodeDOM::XplExpression *temp2=new CodeDOM::XplExpression(yyvsp[0].node);temp2->set_ElementName(DT("r"));
					tempNode=new CodeDOM::XplBinaryoperator(CodeDOM::ZOEBINARYOPERATORS_ENUM_GR,false,temp,temp2);
					tempNode->set_ElementName(L"bo");
					yyval.node=tempNode;
				}
#line 8608 "layerd_dpp_parser_beta_tab.c"
break;
case 337:
  if (!yytrial)
#line 2959 "layerd_dpp_parser_beta.y"
{/*	Relational_Exp OP_MENORIGUAL Shift_Exp*/
					CodeDOM::XplExpression *temp=new CodeDOM::XplExpression(yyvsp[-2].node);temp->set_ElementName(DT("l"));
					CodeDOM::XplExpression *temp2=new CodeDOM::XplExpression(yyvsp[0].node);temp2->set_ElementName(DT("r"));
					tempNode=new CodeDOM::XplBinaryoperator(CodeDOM::ZOEBINARYOPERATORS_ENUM_LSEQ,false,temp,temp2);
					tempNode->set_ElementName(L"bo");
					yyval.node=tempNode;
				}
#line 8620 "layerd_dpp_parser_beta_tab.c"
break;
case 338:
  if (!yytrial)
#line 2967 "layerd_dpp_parser_beta.y"
{/*	Relational_Exp OP_MAYORIGUAL Shift_Exp*/
					CodeDOM::XplExpression *temp=new CodeDOM::XplExpression(yyvsp[-2].node);temp->set_ElementName(DT("l"));
					CodeDOM::XplExpression *temp2=new CodeDOM::XplExpression(yyvsp[0].node);temp2->set_ElementName(DT("r"));
					tempNode=new CodeDOM::XplBinaryoperator(CodeDOM::ZOEBINARYOPERATORS_ENUM_GREQ,false,temp,temp2);
					tempNode->set_ElementName(L"bo");
					yyval.node=tempNode;
				}
#line 8632 "layerd_dpp_parser_beta_tab.c"
break;
case 339:
  if (!yytrial)
#line 2975 "layerd_dpp_parser_beta.y"
{/*	Cast_Exp PC_IS Type_Declarator */
					CodeDOM::XplExpression *temp=new CodeDOM::XplExpression(yyvsp[-2].node);
					tempNode=new CodeDOM::XplCastexpression(temp,(CodeDOM::XplType*)yyvsp[0].node);
					tempNode->set_ElementName(L"is");
					yyval.node=tempNode;
				}
#line 8643 "layerd_dpp_parser_beta_tab.c"
break;
case 340:
  if (!yytrial)
#line 2984 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 8649 "layerd_dpp_parser_beta_tab.c"
break;
case 341:
  if (!yytrial)
#line 2986 "layerd_dpp_parser_beta.y"
{/*	Shift_Exp OP_SHIFTLEFT Additive_Exp*/
					CodeDOM::XplExpression *temp=new CodeDOM::XplExpression(yyvsp[-2].node);temp->set_ElementName(DT("l"));
					CodeDOM::XplExpression *temp2=new CodeDOM::XplExpression(yyvsp[0].node);temp2->set_ElementName(DT("r"));
					tempNode=new CodeDOM::XplBinaryoperator(CodeDOM::ZOEBINARYOPERATORS_ENUM_LSH,false,temp,temp2);
					tempNode->set_ElementName(L"bo");
					yyval.node=tempNode;
				}
#line 8661 "layerd_dpp_parser_beta_tab.c"
break;
case 342:
  if (!yytrial)
#line 2994 "layerd_dpp_parser_beta.y"
{/*	Shift_Exp OP_SHIFTRIGHT Additive_Exp*/
					CodeDOM::XplExpression *temp=new CodeDOM::XplExpression(yyvsp[-2].node);temp->set_ElementName(DT("l"));
					CodeDOM::XplExpression *temp2=new CodeDOM::XplExpression(yyvsp[0].node);temp2->set_ElementName(DT("r"));
					tempNode=new CodeDOM::XplBinaryoperator(CodeDOM::ZOEBINARYOPERATORS_ENUM_RSH,false,temp,temp2);
					tempNode->set_ElementName(L"bo");
					yyval.node=tempNode;
				}
#line 8673 "layerd_dpp_parser_beta_tab.c"
break;
case 343:
  if (!yytrial)
#line 3004 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 8679 "layerd_dpp_parser_beta_tab.c"
break;
case 344:
  if (!yytrial)
#line 3006 "layerd_dpp_parser_beta.y"
{/*	Additive_Exp OP_MAS Multiplicative_Exp*/
					CodeDOM::XplExpression *temp=new CodeDOM::XplExpression(yyvsp[-2].node);temp->set_ElementName(DT("l"));
					CodeDOM::XplExpression *temp2=new CodeDOM::XplExpression(yyvsp[0].node);temp2->set_ElementName(DT("r"));
					tempNode=new CodeDOM::XplBinaryoperator(CodeDOM::ZOEBINARYOPERATORS_ENUM_ADD,false,temp,temp2);
					tempNode->set_ElementName(L"bo");
					yyval.node=tempNode;
				}
#line 8691 "layerd_dpp_parser_beta_tab.c"
break;
case 345:
  if (!yytrial)
#line 3014 "layerd_dpp_parser_beta.y"
{/*	Additive_Exp OP_MENOS Multiplicative_Exp*/
					CodeDOM::XplExpression *temp=new CodeDOM::XplExpression(yyvsp[-2].node);temp->set_ElementName(DT("l"));
					CodeDOM::XplExpression *temp2=new CodeDOM::XplExpression(yyvsp[0].node);temp2->set_ElementName(DT("r"));
					tempNode=new CodeDOM::XplBinaryoperator(CodeDOM::ZOEBINARYOPERATORS_ENUM_MIN,false,temp,temp2);
					tempNode->set_ElementName(L"bo");
					yyval.node=tempNode;
				}
#line 8703 "layerd_dpp_parser_beta_tab.c"
break;
case 346:
  if (!yytrial)
#line 3024 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 8709 "layerd_dpp_parser_beta_tab.c"
break;
case 347:
  if (!yytrial)
#line 3026 "layerd_dpp_parser_beta.y"
{/*	Multiplicative_Exp OP_ASTERISCO PM_Access_Exp*/
					CodeDOM::XplExpression *temp=new CodeDOM::XplExpression(yyvsp[-2].node);temp->set_ElementName(DT("l"));
					CodeDOM::XplExpression *temp2=new CodeDOM::XplExpression(yyvsp[0].node);temp2->set_ElementName(DT("r"));
					tempNode=new CodeDOM::XplBinaryoperator(CodeDOM::ZOEBINARYOPERATORS_ENUM_MUL,false,temp,temp2);
					tempNode->set_ElementName(L"bo");
					yyval.node=tempNode;
				}
#line 8721 "layerd_dpp_parser_beta_tab.c"
break;
case 348:
  if (!yytrial)
#line 3034 "layerd_dpp_parser_beta.y"
{/*	Multiplicative_Exp OP_DIVIDIDO PM_Access_Exp*/
					CodeDOM::XplExpression *temp=new CodeDOM::XplExpression(yyvsp[-2].node);temp->set_ElementName(DT("l"));
					CodeDOM::XplExpression *temp2=new CodeDOM::XplExpression(yyvsp[0].node);temp2->set_ElementName(DT("r"));
					tempNode=new CodeDOM::XplBinaryoperator(CodeDOM::ZOEBINARYOPERATORS_ENUM_DIV,false,temp,temp2);
					tempNode->set_ElementName(L"bo");
					yyval.node=tempNode;
				}
#line 8733 "layerd_dpp_parser_beta_tab.c"
break;
case 349:
  if (!yytrial)
#line 3042 "layerd_dpp_parser_beta.y"
{/*	Multiplicative_Exp OP_PORCENTAJE PM_Access_Exp*/
					CodeDOM::XplExpression *temp=new CodeDOM::XplExpression(yyvsp[-2].node);temp->set_ElementName(DT("l"));
					CodeDOM::XplExpression *temp2=new CodeDOM::XplExpression(yyvsp[0].node);temp2->set_ElementName(DT("r"));
					tempNode=new CodeDOM::XplBinaryoperator(CodeDOM::ZOEBINARYOPERATORS_ENUM_MOD,false,temp,temp2);
					tempNode->set_ElementName(L"bo");
					yyval.node=tempNode;
				}
#line 8745 "layerd_dpp_parser_beta_tab.c"
break;
case 350:
  if (!yytrial)
#line 3052 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 8751 "layerd_dpp_parser_beta_tab.c"
break;
case 351:
  if (!yytrial)
#line 3054 "layerd_dpp_parser_beta.y"
{/*	PM_Access_Exp OP_PUNTOASTERISCO Cast_Exp*/
					CodeDOM::XplExpression *temp=new CodeDOM::XplExpression(yyvsp[-2].node);temp->set_ElementName(DT("l"));
					CodeDOM::XplExpression *temp2=new CodeDOM::XplExpression(yyvsp[0].node);temp2->set_ElementName(DT("r"));
					tempNode=new CodeDOM::XplBinaryoperator(CodeDOM::ZOEBINARYOPERATORS_ENUM_MP,false,temp,temp2);
					tempNode->set_ElementName(L"bo");
					yyval.node=tempNode;
				}
#line 8763 "layerd_dpp_parser_beta_tab.c"
break;
case 352:
  if (!yytrial)
#line 3062 "layerd_dpp_parser_beta.y"
{/*	PM_Access_Exp OP_MENOSMAYORASTERISCO Cast_Exp*/
					CodeDOM::XplExpression *temp=new CodeDOM::XplExpression(yyvsp[-2].node);temp->set_ElementName(DT("l"));
					CodeDOM::XplExpression *temp2=new CodeDOM::XplExpression(yyvsp[0].node);temp2->set_ElementName(DT("r"));
					tempNode=new CodeDOM::XplBinaryoperator(CodeDOM::ZOEBINARYOPERATORS_ENUM_PMP,false,temp,temp2);
					tempNode->set_ElementName(L"bo");
					yyval.node=tempNode;
				}
#line 8775 "layerd_dpp_parser_beta_tab.c"
break;
case 353:
  if (!yytrial)
#line 3072 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 8781 "layerd_dpp_parser_beta_tab.c"
break;
case 354:
  if (!yytrial)
#line 3074 "layerd_dpp_parser_beta.y"
{/*	OPEN_PARENTESIS Type_Name CLOSE_PARENTESIS Cast_Exp*/
					CodeDOM::XplExpression *temp=new CodeDOM::XplExpression(yyvsp[0].node);
					tempNode=new CodeDOM::XplCastexpression(temp,(CodeDOM::XplType*)yyvsp[-2].node);
					tempNode->set_ElementName(L"cast");
					yyval.node=tempNode;
				}
#line 8792 "layerd_dpp_parser_beta_tab.c"
break;
case 355:
  if (!yytrial)
#line 3083 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 8798 "layerd_dpp_parser_beta_tab.c"
break;
case 356:
  if (!yytrial)
#line 3085 "layerd_dpp_parser_beta.y"
{/*	OP_MASMAS Unary_Exp*/
					CodeDOM::XplExpression *temp2=new CodeDOM::XplExpression();
					temp2->set_texpression(yyvsp[0].node);temp2->set_ElementName(L"u");
					tempNode=new CodeDOM::XplUnaryoperator(CodeDOM::ZOEUNARYOPERATORS_ENUM_PREINC , false, temp2);
					tempNode->set_ElementName(L"uo");
					yyval.node=tempNode;
				}
#line 8810 "layerd_dpp_parser_beta_tab.c"
break;
case 357:
  if (!yytrial)
#line 3093 "layerd_dpp_parser_beta.y"
{/*	OP_MENOSMENOS Unary_Exp*/
					CodeDOM::XplExpression *temp2=new CodeDOM::XplExpression();
					temp2->set_texpression(yyvsp[0].node);temp2->set_ElementName(L"u");
					tempNode=new CodeDOM::XplUnaryoperator(CodeDOM::ZOEUNARYOPERATORS_ENUM_PREDEC , false,temp2);
					tempNode->set_ElementName(L"uo");
					yyval.node=tempNode;
				}
#line 8822 "layerd_dpp_parser_beta_tab.c"
break;
case 358:
  if (!yytrial)
#line 3101 "layerd_dpp_parser_beta.y"
{/*	Unary_Operator Cast_Exp*/
					CodeDOM::XplExpression *temp2=new CodeDOM::XplExpression();
					temp2->set_texpression(yyvsp[0].node);temp2->set_ElementName(L"u");
					CodeDOM::XplUnaryoperators_enum oper=CodeDOM::ZOEUNARYOPERATORS_ENUM_MIN;
					switch(yyvsp[-1].num){
						case OP_MENOS:oper=CodeDOM::ZOEUNARYOPERATORS_ENUM_MIN;break;
						case OP_ADMIRACION:oper=CodeDOM::ZOEUNARYOPERATORS_ENUM_NOT;break;
						case OP_Y:oper=CodeDOM::ZOEUNARYOPERATORS_ENUM_AOF;break;
						case OP_ASTERISCO:oper=CodeDOM::ZOEUNARYOPERATORS_ENUM_IND;break;
						case OP_CELDILLA:oper=CodeDOM::ZOEUNARYOPERATORS_ENUM_ONECOMP;break;
					};
					tempNode=new CodeDOM::XplUnaryoperator(oper, false,temp2);
					tempNode->set_ElementName(L"uo");
					yyval.node=tempNode;
				}
#line 8842 "layerd_dpp_parser_beta_tab.c"
break;
case 359:
  if (!yytrial)
#line 3117 "layerd_dpp_parser_beta.y"
{/*	PC_SIZEOF Unary_Exp*/
					CodeDOM::XplExpression *temp2=new CodeDOM::XplExpression();
					temp2->set_texpression(yyvsp[-1].node);temp2->set_ElementName(L"u");
					tempNode=new CodeDOM::XplUnaryoperator(CodeDOM::ZOEUNARYOPERATORS_ENUM_SIZEOF, false ,temp2);
					tempNode->set_ElementName(L"uo");
					yyval.node=tempNode;
				}
#line 8854 "layerd_dpp_parser_beta_tab.c"
break;
case 360:
  if (!yytrial)
#line 3125 "layerd_dpp_parser_beta.y"
{/*	PC_SIZEOF OPEN_PARENTESIS R_Type_Decl CLOSE_PARENTESIS*/
					WARNING_MESSAGE("Internal: sizeof expression for types not implemented.");
					yyval.node=CodeDOM::XplExpression::new_empty();
				}
#line 8863 "layerd_dpp_parser_beta_tab.c"
break;
case 361:
  if (!yytrial)
#line 3129 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 8869 "layerd_dpp_parser_beta_tab.c"
break;
case 362:
  if (!yytrial)
#line 3131 "layerd_dpp_parser_beta.y"
{/*	PC_GETTYPE OPEN_PARENTESIS R_Type_Decl CLOSE_PARENTESIS*/
					CodeDOM::XplType *type = (CodeDOM::XplType*)yyvsp[-1].node;
					type->set_ElementName(L"t");
					yyval.node=type;
				}
#line 8879 "layerd_dpp_parser_beta_tab.c"
break;
case 363:
  if (!yytrial)
#line 3137 "layerd_dpp_parser_beta.y"
{/*	PC_TYPEOF OPEN_PARENTESIS Expression CLOSE_PARENTESIS*/
					CodeDOM::XplExpression *temp2=new CodeDOM::XplExpression();
					temp2->set_texpression(yyvsp[-1].node);temp2->set_ElementName(L"u");
					tempNode=new CodeDOM::XplUnaryoperator(CodeDOM::ZOEUNARYOPERATORS_ENUM_TYPEOF, false ,temp2);
					tempNode->set_ElementName(L"uo");
					yyval.node=tempNode;
				}
#line 8891 "layerd_dpp_parser_beta_tab.c"
break;
case 364:
  if (!yytrial)
#line 3145 "layerd_dpp_parser_beta.y"
{/*	PC_GETTYPE OPEN_PARENTESIS R_Type_Decl CLOSE_PARENTESIS*/
					CodeDOM::XplType *type = (CodeDOM::XplType*)yyvsp[-1].node;
					type->set_ElementName(L"toft");
					yyval.node=type;
				}
#line 8901 "layerd_dpp_parser_beta_tab.c"
break;
case 365:
  if (!yytrial)
#line 3154 "layerd_dpp_parser_beta.y"
{/*	PC_WRITECODE WC_Block*/
					CodeDOM::XplWriteCodeBody*wb=CodeDOM::XplExpression::new_writecode();
					wb->set_tWriteCodeBody(yyvsp[0].node);
					yyval.node=wb;
					SET_SOURCE_DATA_S(wb,-1);
				}
#line 8912 "layerd_dpp_parser_beta_tab.c"
break;
case 366:
  if (!yytrial)
#line 3161 "layerd_dpp_parser_beta.y"
{/*	PC_WRITECODE OPEN_PARENTESIS Expression CLOSE_PARENTESIS PUNTO_COMA*/
					CodeDOM::XplWriteCodeBody*wb=CodeDOM::XplExpression::new_writecode();
					CodeDOM::XplExpression*e=CodeDOM::XplWriteCodeBody::new_e();
					e->set_texpression(yyvsp[-1].node);
					wb->set_tWriteCodeBody(e);
					yyval.node=wb;
					SET_SOURCE_DATA_S(wb,-3);
				}
#line 8925 "layerd_dpp_parser_beta_tab.c"
break;
case 367:
  if (!yytrial)
#line 3170 "layerd_dpp_parser_beta.y"
{/*	PC_WRITECODE WC_Block*/
					CodeDOM::XplWriteCodeBody*wb=CodeDOM::XplExpression::new_writecode();
					wb->set_tWriteCodeBody(yyvsp[0].node);
					yyval.node=wb;
					SET_SOURCE_DATA_S(wb,-1);
				}
#line 8936 "layerd_dpp_parser_beta_tab.c"
break;
case 368:
  if (!yytrial)
#line 3177 "layerd_dpp_parser_beta.y"
{/*	PC_WRITECODE error*/
					SINTAX_ERROR("'writecode' expression invalid.");
					CodeDOM::XplWriteCodeBody*wb=CodeDOM::XplExpression::new_writecode();
					yyval.node=wb;
				}
#line 8946 "layerd_dpp_parser_beta_tab.c"
break;
case 369:
  if (!yytrial)
#line 3185 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 8952 "layerd_dpp_parser_beta_tab.c"
break;
case 370:
  if (!yytrial)
#line 3187 "layerd_dpp_parser_beta.y"
{
					yyval.node=yyvsp[0].node;
				}
#line 8960 "layerd_dpp_parser_beta_tab.c"
break;
case 371:
  if (!yytrial)
#line 3191 "layerd_dpp_parser_beta.y"
{
					CodeDOM::XplComplexfunctioncall *cfc=CodeDOM::XplExpression::new_cfc();
					CodeDOM::XplExpression*leftExp=CodeDOM::XplComplexfunctioncall::new_l();
					leftExp->set_texpression(yyvsp[-5].node);
					cfc->set_l(leftExp);
					cfc->set_ce((CodeDOM::XplCexpression*)yyvsp[-2].node);
					yyval.node=cfc;
				}
#line 8973 "layerd_dpp_parser_beta_tab.c"
break;
case 372:
  if (!yytrial)
#line 3200 "layerd_dpp_parser_beta.y"
{/*	Postfix_Exp OPEN_CORCHETE Expression_List CLOSE_CORCHETE*/
					CodeDOM::XplExpression *temp2=CodeDOM::XplFunctioncall::new_l();
					temp2->set_texpression(yyvsp[-3].node);
					CodeDOM::XplFunctioncall *br=new CodeDOM::XplFunctioncall(temp2,(CodeDOM::XplExpressionlist*)yyvsp[-1].node,NULL);
					br->set_ElementName(L"b");
					tempNode=br;
					yyval.node=tempNode;
				}
#line 8986 "layerd_dpp_parser_beta_tab.c"
break;
case 373:
  if (!yytrial)
#line 3209 "layerd_dpp_parser_beta.y"
{/*	Postfix_Exp OPEN_PARENTESIS Expression_List CLOSE_PARENTESIS*/
					CodeDOM::XplExpression *temp2=CodeDOM::XplFunctioncall::new_l();
					temp2->set_texpression(yyvsp[-3].node);
					CodeDOM::XplFunctioncall *fc=new CodeDOM::XplFunctioncall();
					fc->set_ElementName(L"fc");
					fc->set_l(temp2);
					fc->set_args((CodeDOM::XplExpressionlist*)yyvsp[-1].node);
					tempNode=fc;
					yyval.node=tempNode;
				}
#line 9001 "layerd_dpp_parser_beta_tab.c"
break;
case 374:
  if (!yytrial)
#line 3220 "layerd_dpp_parser_beta.y"
{/*	Postfix_Exp OPEN_PARENTESIS CLOSE_PARENTESIS*/
					CodeDOM::XplExpression *temp2=CodeDOM::XplFunctioncall::new_l();
					temp2->set_texpression(yyvsp[-2].node);
					CodeDOM::XplFunctioncall *fc=new CodeDOM::XplFunctioncall();
					fc->set_ElementName(L"fc");
					fc->set_l(temp2);
					fc->set_args(CodeDOM::XplFunctioncall::new_args());
					tempNode=fc;
					yyval.node=tempNode;
				}
#line 9016 "layerd_dpp_parser_beta_tab.c"
break;
case 375:
  if (!yytrial)
#line 3231 "layerd_dpp_parser_beta.y"
{/*	Postfix_Exp Block*/
					CodeDOM::XplNode *postfix=yyvsp[-1].node;
					CodeDOM::XplFunctioncall *fc = NULL ;

					if(postfix==NULL){
						SINTAX_ERROR("Invalid postfix expression.");
						break;
					}
					if(postfix->get_ElementName()==L"fc"){
						fc=(CodeDOM::XplFunctioncall*)postfix;
						/*postfix->set_texpression(NULL);*/
						/*delete postfix;*/
					}
					else{
						fc = new CodeDOM::XplFunctioncall();
						CodeDOM::XplExpression *temp2=CodeDOM::XplFunctioncall::new_l();
						temp2->set_texpression(yyvsp[-1].node);
						fc->set_ElementName(L"fc");
						fc->set_l(temp2);
						fc->set_args(NULL);
					}
					fc->set_bk((CodeDOM::XplFunctionBody*)yyvsp[0].node);
					tempNode=fc;
					yyval.node=tempNode;
				}
#line 9046 "layerd_dpp_parser_beta_tab.c"
break;
case 376:
  if (!yytrial)
#line 3257 "layerd_dpp_parser_beta.y"
{/*	Postfix_Exp PUNTO Complete_Class_Name*/
					CodeDOM::XplExpression *temp=new CodeDOM::XplExpression();
					temp->set_texpression(temp->new_n());
					temp->get_texpression()->set_Value(yyvsp[0].str);
					temp->set_ElementName(DT("r"));
					CodeDOM::XplExpression *temp2=new CodeDOM::XplExpression();
					temp2->set_texpression(yyvsp[-2].node);
					temp2->set_ElementName(DT("l"));
					tempNode=new CodeDOM::XplBinaryoperator(CodeDOM::ZOEBINARYOPERATORS_ENUM_M,false,temp2,temp);
					tempNode->set_ElementName(L"bo");
					yyval.node=tempNode;
				}
#line 9063 "layerd_dpp_parser_beta_tab.c"
break;
case 377:
  if (!yytrial)
#line 3270 "layerd_dpp_parser_beta.y"
{/*	Postfix_Exp OP_MENOSMAYOR IDENTIFICADOR*/
					CodeDOM::XplExpression *temp=new CodeDOM::XplExpression();
					temp->set_texpression(temp->new_n());
					temp->get_texpression()->set_Value(yyvsp[0].str);
					temp->set_ElementName(DT("r"));
					CodeDOM::XplExpression *temp2=new CodeDOM::XplExpression();
					temp2->set_texpression(yyvsp[-2].node);
					temp2->set_ElementName(DT("l"));
					tempNode=new CodeDOM::XplBinaryoperator(CodeDOM::ZOEBINARYOPERATORS_ENUM_PM,false,temp2,temp);
					tempNode->set_ElementName(L"bo");
					yyval.node=tempNode;
				}
#line 9080 "layerd_dpp_parser_beta_tab.c"
break;
case 378:
  if (!yytrial)
#line 3283 "layerd_dpp_parser_beta.y"
{/*	Postfix_Exp OP_MASMAS*/
					CodeDOM::XplExpression *temp2=new CodeDOM::XplExpression();
					temp2->set_texpression(yyvsp[-1].node);
					temp2->set_ElementName(L"u");
					tempNode=new CodeDOM::XplUnaryoperator(CodeDOM::ZOEUNARYOPERATORS_ENUM_INC, false ,temp2);
					tempNode->set_ElementName(L"uo");
					yyval.node=tempNode;
				}
#line 9093 "layerd_dpp_parser_beta_tab.c"
break;
case 379:
  if (!yytrial)
#line 3292 "layerd_dpp_parser_beta.y"
{/*	Postfix_Exp OP_MENOSMENOS*/
					CodeDOM::XplExpression *temp2=new CodeDOM::XplExpression();
					temp2->set_texpression(yyvsp[-1].node);
					temp2->set_ElementName(L"u");
					tempNode=new CodeDOM::XplUnaryoperator(CodeDOM::ZOEUNARYOPERATORS_ENUM_DEC, false ,temp2);
					tempNode->set_ElementName(L"uo");
					yyval.node=tempNode;
				}
#line 9106 "layerd_dpp_parser_beta_tab.c"
break;
case 380:
  if (!yytrial)
#line 3304 "layerd_dpp_parser_beta.y"
{/*	PC_NEW New_Placement Type_Declarator Initializer*/
					CodeDOM::XplType* t=(CodeDOM::XplType*)yyvsp[-1].nodos[0];
					t->set_ElementName(DT("type"));
					CodeDOM::XplNewExpression* ne=CodeDOM::XplExpression::new_new();
					ne->set_type(t);
					SetNewTypeModifiers(ne,(unsigned)yyvsp[-1].nodos[1]);
					ne->set_GCParams((CodeDOM::XplExpressionlist*)yyvsp[-2].node);
					ne->set_init((CodeDOM::XplInitializerList*)yyvsp[0].node);
					yyval.node=ne;
				}
#line 9121 "layerd_dpp_parser_beta_tab.c"
break;
case 381:
  if (!yytrial)
#line 3315 "layerd_dpp_parser_beta.y"
{/*	PC_NEW Type_Declarator Initializer*/
					CodeDOM::XplType* t=(CodeDOM::XplType*)yyvsp[-1].nodos[0];
					t->set_ElementName(DT("type"));
					CodeDOM::XplNewExpression* ne=CodeDOM::XplExpression::new_new();
					ne->set_type(t);
					SetNewTypeModifiers(ne,(unsigned)yyvsp[-1].nodos[1]);
					ne->set_init((CodeDOM::XplInitializerList*)yyvsp[0].node);
					yyval.node=ne;
				}
#line 9135 "layerd_dpp_parser_beta_tab.c"
break;
case 382:
  if (!yytrial)
#line 3325 "layerd_dpp_parser_beta.y"
{/*	PC_NEW New_Placement Type_Declarator */
					CodeDOM::XplType* t=(CodeDOM::XplType*)yyvsp[0].nodos[0];
					t->set_ElementName(DT("type"));
					CodeDOM::XplNewExpression* ne=CodeDOM::XplExpression::new_new();
					ne->set_type(t);
					SetNewTypeModifiers(ne,(unsigned)yyvsp[0].nodos[1]);
					ne->set_GCParams((CodeDOM::XplExpressionlist*)yyvsp[-1].node);
					yyval.node=ne;
				}
#line 9149 "layerd_dpp_parser_beta_tab.c"
break;
case 383:
  if (!yytrial)
#line 3335 "layerd_dpp_parser_beta.y"
{/*	PC_NEW Type_Declarator */
					CodeDOM::XplType* t=(CodeDOM::XplType*)yyvsp[0].nodos[0];
					t->set_ElementName(DT("type"));
					CodeDOM::XplNewExpression* ne=CodeDOM::XplExpression::new_new();
					ne->set_type(t);
					SetNewTypeModifiers(ne,(unsigned)yyvsp[0].nodos[1]);
					yyval.node=ne;
				}
#line 9162 "layerd_dpp_parser_beta_tab.c"
break;
case 384:
  if (!yytrial)
#line 3345 "layerd_dpp_parser_beta.y"
{/*	PC_NEW New_Placement Type_Declarator */
					CodeDOM::XplType* t=(CodeDOM::XplType*)yyvsp[-2].nodos[0];
					t->set_ElementName(DT("type"));
					CodeDOM::XplNewExpression* ne=CodeDOM::XplExpression::new_new();
					ne->set_type(t);
					SetNewTypeModifiers(ne,(unsigned)yyvsp[-2].nodos[1]);
					ne->set_GCParams((CodeDOM::XplExpressionlist*)yyvsp[-3].node);
					yyval.node=ne;
				}
#line 9176 "layerd_dpp_parser_beta_tab.c"
break;
case 385:
  if (!yytrial)
#line 3355 "layerd_dpp_parser_beta.y"
{/*	PC_NEW Type_Declarator */
					CodeDOM::XplType* t=(CodeDOM::XplType*)yyvsp[-2].nodos[0];
					t->set_ElementName(DT("type"));
					CodeDOM::XplNewExpression* ne=CodeDOM::XplExpression::new_new();
					ne->set_type(t);
					SetNewTypeModifiers(ne,(unsigned)yyvsp[-2].nodos[1]);
					yyval.node=ne;
				}
#line 9189 "layerd_dpp_parser_beta_tab.c"
break;
case 386:
  if (!yytrial)
#line 3366 "layerd_dpp_parser_beta.y"
{yyval.node=yyvsp[-1].node;}
#line 9195 "layerd_dpp_parser_beta_tab.c"
break;
case 387:
  if (!yytrial)
#line 3371 "layerd_dpp_parser_beta.y"
{/*	PC_DELETE Cast_Exp*/
					CodeDOM::XplExpression*de=CodeDOM::XplExpression::new_delete();
					de->set_texpression(yyvsp[0].node);
					yyval.node=de;
				}
#line 9205 "layerd_dpp_parser_beta_tab.c"
break;
case 388:
  if (!yytrial)
#line 3380 "layerd_dpp_parser_beta.y"
{/*	Literal*/
					yyvsp[0].literal->set_ElementName(L"lit");
					yyval.node=yyvsp[0].literal;
				}
#line 9214 "layerd_dpp_parser_beta_tab.c"
break;
case 389:
  if (!yytrial)
#line 3384 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 9220 "layerd_dpp_parser_beta_tab.c"
break;
case 390:
  if (!yytrial)
#line 3394 "layerd_dpp_parser_beta.y"
{/*	Complete_Class_Name*/
					tempNode=new CodeDOM::XplNode(CodeDOM::ZOENODETYPE_STRING);
					tempNode->set_ElementName(L"n");
					tempNode->set_Value(yyvsp[0].str);
					yyval.node=tempNode;
				}
#line 9231 "layerd_dpp_parser_beta_tab.c"
break;
case 391:
  if (!yytrial)
#line 3400 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 9237 "layerd_dpp_parser_beta_tab.c"
break;
case 392:
  if (!yytrial)
#line 3404 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];RET_POS=GET_PARSER_POS[0];}
#line 9243 "layerd_dpp_parser_beta_tab.c"
break;
case 393:
  if (!yytrial)
#line 3406 "layerd_dpp_parser_beta.y"
{
					RET_POS=GET_PARSER_POS[0];
					unsigned check=0;
                    if(yyvsp[-1].num==PC_UNSIGNED)check=yyvsp[0].num;
                    else if(yyvsp[0].num==PC_UNSIGNED){
                        check=yyvsp[0].num;
                        WARNING_MESSAGE("It's recommended to use 'unsigned T' instead of 'T unsigned'.");
                    }
                    else{
                        SINTAX_ERROR("Invalid combination of base types.");
                    }
                    switch(check){
                        case PC_SBYTE:yyval.num=PC_BYTE;break;
                        case PC_SHORT:yyval.num=PC_USHORT;break;
                        case PC_INT:yyval.num=PC_UINT;break;
                        case PC_LONG:yyval.num=PC_ULONG;break;
                        default:yyval.num=PC_INT;SINTAX_ERROR("Invalid combination of base types.");break;
                    };
                 }
#line 9267 "layerd_dpp_parser_beta_tab.c"
break;
case 394:
  if (!yytrial)
#line 3428 "layerd_dpp_parser_beta.y"
{yyval.num=PC_VOID;RET_POS=GET_PARSER_POS[0];}
#line 9273 "layerd_dpp_parser_beta_tab.c"
break;
case 395:
  if (!yytrial)
#line 3429 "layerd_dpp_parser_beta.y"
{yyval.num=PC_SBYTE;RET_POS=GET_PARSER_POS[0];}
#line 9279 "layerd_dpp_parser_beta_tab.c"
break;
case 396:
  if (!yytrial)
#line 3430 "layerd_dpp_parser_beta.y"
{yyval.num=PC_SHORT;RET_POS=GET_PARSER_POS[0];}
#line 9285 "layerd_dpp_parser_beta_tab.c"
break;
case 397:
  if (!yytrial)
#line 3431 "layerd_dpp_parser_beta.y"
{yyval.num=PC_INT;RET_POS=GET_PARSER_POS[0];}
#line 9291 "layerd_dpp_parser_beta_tab.c"
break;
case 398:
  if (!yytrial)
#line 3432 "layerd_dpp_parser_beta.y"
{yyval.num=PC_LONG;RET_POS=GET_PARSER_POS[0];}
#line 9297 "layerd_dpp_parser_beta_tab.c"
break;
case 399:
  if (!yytrial)
#line 3433 "layerd_dpp_parser_beta.y"
{yyval.num=PC_UNSIGNED;RET_POS=GET_PARSER_POS[0];}
#line 9303 "layerd_dpp_parser_beta_tab.c"
break;
case 400:
  if (!yytrial)
#line 3434 "layerd_dpp_parser_beta.y"
{yyval.num=PC_BYTE;RET_POS=GET_PARSER_POS[0];}
#line 9309 "layerd_dpp_parser_beta_tab.c"
break;
case 401:
  if (!yytrial)
#line 3435 "layerd_dpp_parser_beta.y"
{yyval.num=PC_USHORT;RET_POS=GET_PARSER_POS[0];}
#line 9315 "layerd_dpp_parser_beta_tab.c"
break;
case 402:
  if (!yytrial)
#line 3436 "layerd_dpp_parser_beta.y"
{yyval.num=PC_ULONG;RET_POS=GET_PARSER_POS[0];}
#line 9321 "layerd_dpp_parser_beta_tab.c"
break;
case 403:
  if (!yytrial)
#line 3437 "layerd_dpp_parser_beta.y"
{yyval.num=PC_FLOAT;RET_POS=GET_PARSER_POS[0];}
#line 9327 "layerd_dpp_parser_beta_tab.c"
break;
case 404:
  if (!yytrial)
#line 3438 "layerd_dpp_parser_beta.y"
{yyval.num=PC_DOUBLE;RET_POS=GET_PARSER_POS[0];}
#line 9333 "layerd_dpp_parser_beta_tab.c"
break;
case 405:
  if (!yytrial)
#line 3439 "layerd_dpp_parser_beta.y"
{yyval.num=PC_DECIMAL;RET_POS=GET_PARSER_POS[0];}
#line 9339 "layerd_dpp_parser_beta_tab.c"
break;
case 406:
  if (!yytrial)
#line 3440 "layerd_dpp_parser_beta.y"
{yyval.num=PC_CHAR;RET_POS=GET_PARSER_POS[0];}
#line 9345 "layerd_dpp_parser_beta_tab.c"
break;
case 407:
  if (!yytrial)
#line 3441 "layerd_dpp_parser_beta.y"
{yyval.num=PC_ASCII_CHAR;RET_POS=GET_PARSER_POS[0];}
#line 9351 "layerd_dpp_parser_beta_tab.c"
break;
case 408:
  if (!yytrial)
#line 3442 "layerd_dpp_parser_beta.y"
{yyval.num=PC_STRING;RET_POS=GET_PARSER_POS[0];}
#line 9357 "layerd_dpp_parser_beta_tab.c"
break;
case 409:
  if (!yytrial)
#line 3443 "layerd_dpp_parser_beta.y"
{yyval.num=PC_ASCII_STRING;RET_POS=GET_PARSER_POS[0];}
#line 9363 "layerd_dpp_parser_beta_tab.c"
break;
case 410:
  if (!yytrial)
#line 3444 "layerd_dpp_parser_beta.y"
{yyval.num=PC_TYPE;RET_POS=GET_PARSER_POS[0];}
#line 9369 "layerd_dpp_parser_beta_tab.c"
break;
case 411:
  if (!yytrial)
#line 3445 "layerd_dpp_parser_beta.y"
{yyval.num=PC_BLOCK;RET_POS=GET_PARSER_POS[0];}
#line 9375 "layerd_dpp_parser_beta_tab.c"
break;
case 412:
  if (!yytrial)
#line 3446 "layerd_dpp_parser_beta.y"
{yyval.num=PC_BOOL;RET_POS=GET_PARSER_POS[0];}
#line 9381 "layerd_dpp_parser_beta_tab.c"
break;
case 413:
  if (!yytrial)
#line 3447 "layerd_dpp_parser_beta.y"
{yyval.num=PC_OBJECT;RET_POS=GET_PARSER_POS[0];}
#line 9387 "layerd_dpp_parser_beta_tab.c"
break;
case 414:
  if (!yytrial)
#line 3451 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 9393 "layerd_dpp_parser_beta_tab.c"
break;
case 415:
  if (!yytrial)
#line 3452 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 9399 "layerd_dpp_parser_beta_tab.c"
break;
case 416:
  if (!yytrial)
#line 3453 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 9405 "layerd_dpp_parser_beta_tab.c"
break;
case 417:
  if (!yytrial)
#line 3454 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 9411 "layerd_dpp_parser_beta_tab.c"
break;
case 418:
  if (!yytrial)
#line 3455 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 9417 "layerd_dpp_parser_beta_tab.c"
break;
case 419:
  if (!yytrial)
#line 3456 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 9423 "layerd_dpp_parser_beta_tab.c"
break;
case 420:
  if (!yytrial)
#line 3457 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 9429 "layerd_dpp_parser_beta_tab.c"
break;
case 421:
  if (!yytrial)
#line 3458 "layerd_dpp_parser_beta.y"
{yyval=yyvsp[0];}
#line 9435 "layerd_dpp_parser_beta_tab.c"
break;
case 422:
  if (!yytrial)
#line 3474 "layerd_dpp_parser_beta.y"
{yyval.num=OP_IGUAL;}
#line 9441 "layerd_dpp_parser_beta_tab.c"
break;
case 423:
  if (!yytrial)
#line 3475 "layerd_dpp_parser_beta.y"
{yyval.num=OP_MASIGUAL;}
#line 9447 "layerd_dpp_parser_beta_tab.c"
break;
case 424:
  if (!yytrial)
#line 3476 "layerd_dpp_parser_beta.y"
{yyval.num=OP_MENOSIGUAL;}
#line 9453 "layerd_dpp_parser_beta_tab.c"
break;
case 425:
  if (!yytrial)
#line 3477 "layerd_dpp_parser_beta.y"
{yyval.num=OP_ASTERISCOIGUAL;}
#line 9459 "layerd_dpp_parser_beta_tab.c"
break;
case 426:
  if (!yytrial)
#line 3478 "layerd_dpp_parser_beta.y"
{yyval.num=OP_DIVIDIDOIGUAL;}
#line 9465 "layerd_dpp_parser_beta_tab.c"
break;
case 427:
  if (!yytrial)
#line 3479 "layerd_dpp_parser_beta.y"
{yyval.num=OP_YIGUAL;}
#line 9471 "layerd_dpp_parser_beta_tab.c"
break;
case 428:
  if (!yytrial)
#line 3480 "layerd_dpp_parser_beta.y"
{yyval.num=OP_OIGUAL;}
#line 9477 "layerd_dpp_parser_beta_tab.c"
break;
case 429:
  if (!yytrial)
#line 3481 "layerd_dpp_parser_beta.y"
{yyval.num=OP_SOMBREROIGUAL;}
#line 9483 "layerd_dpp_parser_beta_tab.c"
break;
case 430:
  if (!yytrial)
#line 3482 "layerd_dpp_parser_beta.y"
{yyval.num=OP_PORCENTAJEIGUAL;}
#line 9489 "layerd_dpp_parser_beta_tab.c"
break;
case 431:
  if (!yytrial)
#line 3483 "layerd_dpp_parser_beta.y"
{yyval.num=OP_SHIFTLEFTIGUAL;}
#line 9495 "layerd_dpp_parser_beta_tab.c"
break;
case 432:
  if (!yytrial)
#line 3484 "layerd_dpp_parser_beta.y"
{yyval.num=OP_SHIFTRIGHTIGUAL;}
#line 9501 "layerd_dpp_parser_beta_tab.c"
break;
case 433:
  if (!yytrial)
#line 3488 "layerd_dpp_parser_beta.y"
{yyval.num=OP_MENOS;}
#line 9507 "layerd_dpp_parser_beta_tab.c"
break;
case 434:
  if (!yytrial)
#line 3489 "layerd_dpp_parser_beta.y"
{yyval.num=OP_ADMIRACION;}
#line 9513 "layerd_dpp_parser_beta_tab.c"
break;
case 435:
  if (!yytrial)
#line 3490 "layerd_dpp_parser_beta.y"
{yyval.num=OP_Y;}
#line 9519 "layerd_dpp_parser_beta_tab.c"
break;
case 436:
  if (!yytrial)
#line 3491 "layerd_dpp_parser_beta.y"
{yyval.num=OP_ASTERISCO;}
#line 9525 "layerd_dpp_parser_beta_tab.c"
break;
case 437:
  if (!yytrial)
#line 3492 "layerd_dpp_parser_beta.y"
{yyval.num=OP_CELDILLA;}
#line 9531 "layerd_dpp_parser_beta_tab.c"
break;
case 438:
  if (!yytrial)
#line 3496 "layerd_dpp_parser_beta.y"
{yyval.num=OP_IGUAL;}
#line 9537 "layerd_dpp_parser_beta_tab.c"
break;
case 439:
  if (!yytrial)
#line 3497 "layerd_dpp_parser_beta.y"
{yyval.num=OP_MAYOR;}
#line 9543 "layerd_dpp_parser_beta_tab.c"
break;
case 440:
  if (!yytrial)
#line 3498 "layerd_dpp_parser_beta.y"
{yyval.num=OP_MENOR;}
#line 9549 "layerd_dpp_parser_beta_tab.c"
break;
case 441:
  if (!yytrial)
#line 3499 "layerd_dpp_parser_beta.y"
{yyval.num=OP_ADMIRACION;}
#line 9555 "layerd_dpp_parser_beta_tab.c"
break;
case 442:
  if (!yytrial)
#line 3500 "layerd_dpp_parser_beta.y"
{yyval.num=OP_CELDILLA;}
#line 9561 "layerd_dpp_parser_beta_tab.c"
break;
case 443:
  if (!yytrial)
#line 3501 "layerd_dpp_parser_beta.y"
{yyval.num=OP_PREGUNTA;}
#line 9567 "layerd_dpp_parser_beta_tab.c"
break;
case 444:
  if (!yytrial)
#line 3502 "layerd_dpp_parser_beta.y"
{yyval.num=OP_IGUALIGUAL;}
#line 9573 "layerd_dpp_parser_beta_tab.c"
break;
case 445:
  if (!yytrial)
#line 3503 "layerd_dpp_parser_beta.y"
{yyval.num=OP_MENORIGUAL;}
#line 9579 "layerd_dpp_parser_beta_tab.c"
break;
case 446:
  if (!yytrial)
#line 3504 "layerd_dpp_parser_beta.y"
{yyval.num=OP_MAYORIGUAL;}
#line 9585 "layerd_dpp_parser_beta_tab.c"
break;
case 447:
  if (!yytrial)
#line 3505 "layerd_dpp_parser_beta.y"
{yyval.num=OP_ADMIRACIONIGUAL;}
#line 9591 "layerd_dpp_parser_beta_tab.c"
break;
case 448:
  if (!yytrial)
#line 3506 "layerd_dpp_parser_beta.y"
{yyval.num=OP_YY;}
#line 9597 "layerd_dpp_parser_beta_tab.c"
break;
case 449:
  if (!yytrial)
#line 3507 "layerd_dpp_parser_beta.y"
{yyval.num=OP_OO;}
#line 9603 "layerd_dpp_parser_beta_tab.c"
break;
case 450:
  if (!yytrial)
#line 3508 "layerd_dpp_parser_beta.y"
{yyval.num=OP_MASMAS;}
#line 9609 "layerd_dpp_parser_beta_tab.c"
break;
case 451:
  if (!yytrial)
#line 3509 "layerd_dpp_parser_beta.y"
{yyval.num=OP_MENOSMENOS;}
#line 9615 "layerd_dpp_parser_beta_tab.c"
break;
case 452:
  if (!yytrial)
#line 3510 "layerd_dpp_parser_beta.y"
{yyval.num=OP_MAS;}
#line 9621 "layerd_dpp_parser_beta_tab.c"
break;
case 453:
  if (!yytrial)
#line 3511 "layerd_dpp_parser_beta.y"
{yyval.num=OP_MENOS;}
#line 9627 "layerd_dpp_parser_beta_tab.c"
break;
case 454:
  if (!yytrial)
#line 3512 "layerd_dpp_parser_beta.y"
{yyval.num=OP_ASTERISCO;}
#line 9633 "layerd_dpp_parser_beta_tab.c"
break;
case 455:
  if (!yytrial)
#line 3513 "layerd_dpp_parser_beta.y"
{yyval.num=OP_DIVIDIDO;}
#line 9639 "layerd_dpp_parser_beta_tab.c"
break;
case 456:
  if (!yytrial)
#line 3514 "layerd_dpp_parser_beta.y"
{yyval.num=OP_Y;}
#line 9645 "layerd_dpp_parser_beta_tab.c"
break;
case 457:
  if (!yytrial)
#line 3515 "layerd_dpp_parser_beta.y"
{yyval.num=OP_O;}
#line 9651 "layerd_dpp_parser_beta_tab.c"
break;
case 458:
  if (!yytrial)
#line 3516 "layerd_dpp_parser_beta.y"
{yyval.num=OP_SOMBRERO;}
#line 9657 "layerd_dpp_parser_beta_tab.c"
break;
case 459:
  if (!yytrial)
#line 3517 "layerd_dpp_parser_beta.y"
{yyval.num=OP_PORCENTAJE;}
#line 9663 "layerd_dpp_parser_beta_tab.c"
break;
case 460:
  if (!yytrial)
#line 3518 "layerd_dpp_parser_beta.y"
{yyval.num=OP_SHIFTLEFT;}
#line 9669 "layerd_dpp_parser_beta_tab.c"
break;
case 461:
  if (!yytrial)
#line 3519 "layerd_dpp_parser_beta.y"
{yyval.num=OP_SHIFTRIGHT;}
#line 9675 "layerd_dpp_parser_beta_tab.c"
break;
case 462:
  if (!yytrial)
#line 3520 "layerd_dpp_parser_beta.y"
{yyval.num=OP_MASIGUAL;}
#line 9681 "layerd_dpp_parser_beta_tab.c"
break;
case 463:
  if (!yytrial)
#line 3521 "layerd_dpp_parser_beta.y"
{yyval.num=OP_MENOSIGUAL;}
#line 9687 "layerd_dpp_parser_beta_tab.c"
break;
case 464:
  if (!yytrial)
#line 3522 "layerd_dpp_parser_beta.y"
{yyval.num=OP_ASTERISCOIGUAL;}
#line 9693 "layerd_dpp_parser_beta_tab.c"
break;
case 465:
  if (!yytrial)
#line 3523 "layerd_dpp_parser_beta.y"
{yyval.num=OP_DIVIDIDOIGUAL;}
#line 9699 "layerd_dpp_parser_beta_tab.c"
break;
case 466:
  if (!yytrial)
#line 3524 "layerd_dpp_parser_beta.y"
{yyval.num=OP_YIGUAL;}
#line 9705 "layerd_dpp_parser_beta_tab.c"
break;
case 467:
  if (!yytrial)
#line 3525 "layerd_dpp_parser_beta.y"
{yyval.num=OP_OIGUAL;}
#line 9711 "layerd_dpp_parser_beta_tab.c"
break;
case 468:
  if (!yytrial)
#line 3526 "layerd_dpp_parser_beta.y"
{yyval.num=OP_SOMBREROIGUAL;}
#line 9717 "layerd_dpp_parser_beta_tab.c"
break;
case 469:
  if (!yytrial)
#line 3527 "layerd_dpp_parser_beta.y"
{yyval.num=OP_PORCENTAJEIGUAL;}
#line 9723 "layerd_dpp_parser_beta_tab.c"
break;
case 470:
  if (!yytrial)
#line 3528 "layerd_dpp_parser_beta.y"
{yyval.num=OP_SHIFTLEFTIGUAL;}
#line 9729 "layerd_dpp_parser_beta_tab.c"
break;
case 471:
  if (!yytrial)
#line 3529 "layerd_dpp_parser_beta.y"
{yyval.num=OP_SHIFTRIGHTIGUAL;}
#line 9735 "layerd_dpp_parser_beta_tab.c"
break;
case 472:
  if (!yytrial)
#line 3530 "layerd_dpp_parser_beta.y"
{yyval.num=OP_MENOSMAYOR;}
#line 9741 "layerd_dpp_parser_beta_tab.c"
break;
case 473:
  if (!yytrial)
#line 3531 "layerd_dpp_parser_beta.y"
{yyval.num=OP_MENOSMAYORASTERISCO;}
#line 9747 "layerd_dpp_parser_beta_tab.c"
break;
case 474:
  if (!yytrial)
#line 3532 "layerd_dpp_parser_beta.y"
{yyval.num=PC_NEW;}
#line 9753 "layerd_dpp_parser_beta_tab.c"
break;
case 475:
  if (!yytrial)
#line 3533 "layerd_dpp_parser_beta.y"
{yyval.num=PC_DELETE;}
#line 9759 "layerd_dpp_parser_beta_tab.c"
break;
case 476:
  if (!yytrial)
#line 3536 "layerd_dpp_parser_beta.y"
{
                                CodeDOM::string str(yyvsp[0].str);
                                if(str==(CodeDOM::string)L"implicit"){
                                    yyval.num=PC_IMPLICIT;
                                }
                                else if(str==(CodeDOM::string)L"explicit"){
                                    yyval.num=PC_EZOEICIT;
                                }
                                else{
                                    SINTAX_ERROR("Operator not valid on overloading declaration, 'implicit' or 'explicit' was expected. Using operator '+'.");
                                    yyval.num=OP_MAS;
                                }
                            }
#line 9777 "layerd_dpp_parser_beta_tab.c"
break;
case 477:
  if (!yytrial)
#line 3553 "layerd_dpp_parser_beta.y"
{/*	Postfix_Exp PUNTO_COMA*/
					CodeDOM::XplExpression* ne=new CodeDOM::XplExpression(yyvsp[-1].node);
					/*ASSING_COMMENT(ne);*/
					ne->set_ElementName(L"e");
					yyval.node=ne;
					SET_SOURCE_DATA_S(ne,0);
				}
#line 9789 "layerd_dpp_parser_beta_tab.c"
break;
case 478:
  if (!yytrial)
#line 3561 "layerd_dpp_parser_beta.y"
{/*	Postfix_Exp PUNTO_COMA*/
					CodeDOM::XplExpression* ne=new CodeDOM::XplExpression(yyvsp[-1].node);
					/*ASSING_COMMENT(ne);*/
					ne->set_ElementName(L"e");
					yyval.node=ne;
					SET_SOURCE_DATA_S(ne,0);
				}
#line 9801 "layerd_dpp_parser_beta_tab.c"
break;
#line 9803 "layerd_dpp_parser_beta_tab.c"
#line 567 "btyaccpa.ske"

  default:
    break;
  }

#if YYDEBUG && defined(YYDBPR)
  if (yydebug) {
    printf("yydebug[%d]: after reduction, result is ", yytrial);
    YYDBPR(yyps->val);
    printf("\n");
  }
#endif

  // Perform user-defined position reduction
#ifdef YYREDUCEPOSNFUNC
  if(!yytrial) {
    YYCALLREDUCEPOSN(YYREDUCEPOSNFUNCARG);
  }
#endif

  yyps->ssp -= yym;
  yystate = *(yyps->ssp);
  yyps->vsp -= yym;
  yyps->psp -= yym;

  yym = yylhs[yyn];
  if (yystate == 0 && yym == 0) {
#if YYDEBUG
    if (yydebug) {
      printf("yydebug[%d,%d]: after reduction, shifting from state 0 to state %d\n", 
	     yydepth, (int)yytrial, YYFINAL);
    }
#endif
    yystate = YYFINAL;
    *++(yyps->ssp) = YYFINAL;
    *++(yyps->vsp) = yyps->val;
    yyretlval = yyps->val;	// return value of root non-terminal to yylval
    *++(yyps->psp) = yyps->pos;
    yyretposn = yyps->pos;	// return value of root position to yyposn
    if (yychar < 0) {
      if ((yychar = YYLex1()) < 0) {
        yychar = 0;
      }
#if YYDEBUG
      if (yydebug) {
        yys = 0;
        if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
        if (!yys) yys = "illegal-symbol";
        printf("yydebug[%d,%d]: state %d, reading %d (%s)\n", 
	       yydepth, (int)yytrial, YYFINAL, yychar, yys); 
      }
#endif
    }
    if (yychar == 0) goto yyaccept;
    goto yyloop;
  }

  if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
      yyn <= YYTABLESIZE && yycheck[yyn] == yystate) {
    yystate = yytable[yyn];
  } else {
    yystate = yydgoto[yym];
  }
#if YYDEBUG
  if (yydebug)
    printf("yydebug[%d,%d]: after reduction, shifting from state %d to state %d\n",
           yydepth, (int)yytrial, *(yyps->ssp), yystate);
#endif
  if (yyps->ssp >= yyps->ss + yyps->stacksize - 1) {
    YYMoreStack(yyps);
  }
  *++(yyps->ssp) = yystate;
  *++(yyps->vsp) = yyps->val;
  *++(yyps->psp) = yyps->pos;
  goto yyloop;


  //
  // Reduction declares that this path is valid.
  // Set yypath and do a full parse
  //
yyvalid:
  if (yypath) {
    goto yyabort;
  }
  while (yyps->save) {
    yyparsestate *save = yyps->save;
    yyps->save = save->save;
    save->save = yypath;
    yypath = save;
  }
#if YYDEBUG
  if (yydebug)
    printf("yydebug[%d,%d]: CONFLICT trial successful, backtracking to state %d, %d tokens\n",
           yydepth, (int)yytrial, yypath->state, yylvp - yylvals - yypath->lexeme);
#endif
  if(yyerrctx) {
    YYFreeState(yyerrctx); yyerrctx = NULL;
  }
  yychar = -1;
  yyps->ssp = yyps->ss + (yypath->ssp - yypath->ss);
  yyps->vsp = yyps->vs + (yypath->vsp - yypath->vs);
  yyps->psp = yyps->ps + (yypath->psp - yypath->ps);
  memcpy (yyps->ss, yypath->ss, (yyps->ssp - yyps->ss + 1) * sizeof(Yshort));
  YYSCopy(yyps->vs, yypath->vs,  yyps->vsp - yyps->vs + 1);
  YYPCopy(yyps->ps, yypath->ps,  yyps->psp - yyps->ps + 1);
  yylvp = yylvals + yypath->lexeme;
  yylpp = yylpsns + yypath->lexeme;
  yylexp = yylexemes + yypath->lexeme;
  yystate = yypath->state;
  goto yyloop;


yyabort:
  if(yyerrctx) {
    YYFreeState(yyerrctx); yyerrctx = NULL;
  }

  YYSTYPE *pv;
  for(pv=yyps->vs; pv<yyps->vsp; pv++) {
    YYDELETEVAL(*pv,2);
  }

  YYPOSN *pp;
  for(pp=yyps->ps; pp<yyps->psp; pp++) {
    YYDELETEPOSN(*pp,2);
  }

  while (yyps) {
    yyparsestate *save = yyps;
    yyps = save->save;
    YYFreeState(save);
  }
  while (yypath) {
    yyparsestate *save = yypath;
    yypath = save->save;
    YYFreeState(save); 
  }
  return (1);


yyaccept:
  if (yyps->save) goto yyvalid;
  if(yyerrctx) {
    YYFreeState(yyerrctx); yyerrctx = NULL;
  }
  while (yyps) {
    yyparsestate *save = yyps;
    yyps = save->save;
    YYFreeState(save);
  }
  while (yypath) {
    yyparsestate *save = yypath;
    yypath = save->save;
    YYFreeState(save); 
  }
  return (0);
}


int YYLex1() {
  if(yylvp<yylve) {
    yylval = *yylvp++;
    yyposn = *yylpp++;
    return *yylexp++;
  } else {
    if(yyps->save) {
      if(yylvp==yylvlim) {
	yyexpand();
      }
      *yylexp = yylex();
      *yylvp++ = yylval;
      yylve++;
      *yylpp++ = yyposn;
      yylpe++;
      return *yylexp++;
    } else {
      return yylex();
    }
  }
}

int yyexpand() {
  int p = yylvp-yylvals;
  int s = yylvlim-yylvals;
  s += YYSTACKGROWTH;
  { Yshort  *tl = yylexemes; 
    YYSTYPE *tv = yylvals;
    YYPOSN  *tp = yylpsns;
    yylvals = new YYSTYPE[s];
    yylpsns = new YYPOSN[s];
    yylexemes = new Yshort[s];
    memcpy(yylexemes, tl, (s-YYSTACKGROWTH)*sizeof(Yshort));
    YYSCopy(yylvals, tv, s-YYSTACKGROWTH);
    YYPCopy(yylpsns, tp, s-YYSTACKGROWTH);
    delete[] tl;
    delete[] tv;
    delete[] tp;
  }
  yylvp = yylve = yylvals + p;
  yylvlim = yylvals + s;
  yylpp = yylpe = yylpsns + p;
  yylplim = yylpsns + s;
  yylexp = yylexemes + p;
  return 0;
}

void YYSCopy(YYSTYPE *to, YYSTYPE *from, int size) {
  int i;                             
  for (i = size-1; i >= 0; i--) {
    to[i] = from[i];
  }
}

void YYPCopy(YYPOSN *to, YYPOSN *from, int size) {
  int i;                             
  for (i = size-1; i >= 0; i--) {
    to[i] = from[i];
  }
}

void YYMoreStack(yyparsestate *yyps) {
  int p = yyps->ssp - yyps->ss;                               
  Yshort  *tss = yyps->ss;
  YYSTYPE *tvs = yyps->vs;
  YYPOSN  *tps = yyps->ps;
  yyps->ss = new Yshort [yyps->stacksize + YYSTACKGROWTH];   
  yyps->vs = new YYSTYPE[yyps->stacksize + YYSTACKGROWTH];  
  yyps->ps = new YYPOSN [yyps->stacksize + YYSTACKGROWTH];  
  memcpy(yyps->ss, tss, yyps->stacksize * sizeof(Yshort));  
  YYSCopy(yyps->vs, tvs, yyps->stacksize);                  
  YYPCopy(yyps->ps, tps, yyps->stacksize);                  
  yyps->stacksize += YYSTACKGROWTH;                           
  delete[] tss;
  delete[] tvs;
  delete[] tps;
  yyps->ssp = yyps->ss + p;                                   
  yyps->vsp = yyps->vs + p;                                   
  yyps->psp = yyps->ps + p;                                   
}

yyparsestate *YYNewState(int size) {
  yyparsestate *p = new yyparsestate;
  p->stacksize = size+4;
  p->ss = new Yshort [size + 4];
  p->vs = new YYSTYPE[size + 4];
  p->ps = new YYPOSN [size + 4];
  memset(&p->vs[0], 0, (size+4)*sizeof(YYSTYPE));
  memset(&p->ps[0], 0, (size+4)*sizeof(YYPOSN));
  return p;
}

void YYFreeState(yyparsestate *p) {
  delete[] p->ss;
  delete[] p->vs;
  delete[] p->ps;
  delete p;
}
